可扩展应用程序标记语言(XAML)是一种基于XML的声明式语言,用于在各种框架中初始化结构化值和对象。当问题是关于具有特定框架的XAML的使用时,还应该提供框架的标签,例如, [wpf](Windows Presentation Foundation),[silverlight],[windows-phone],[windows-store-apps](Windows 8商店应用),[win-universal-app],[xamarin.forms]或[工作流程 - 基础]
单击 StackPanel 中的“空白区域”时,上下文菜单不会出现
我有一个 HierarchicalDataTemplate,其中包含一些简单的项目,包含在水平 StackPanel 中。 上下文菜单也被分配给根 StackPanel 容器: 我有一个 HierarchicalDataTemplate,其中包含一些简单的项目,包含在水平 StackPanel 中。 上下文菜单也被分配给根 StackPanel 容器: <HierarchicalDataTemplate DataType="{x:Type data:GroupViewModel}" ItemsSource="{Binding Path=Children}"> <StackPanel Orientation="Horizontal" Margin="2" ContextMenuOpening="groupContextMenuOpening"> <StackPanel.ContextMenu> <StaticResource ResourceKey="groupContextMenu" /> </StackPanel.ContextMenu> <Rectangle Width="16" Height="15" Fill="{Binding Converter={StaticResource HierarchyLevelConverter}}" Margin="0 0 3 0" Cursor="Hand" > <i:Interaction.Triggers> <i:EventTrigger EventName="MouseLeftButtonDown" > <GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding SetCurrent}"/> </i:EventTrigger> </i:Interaction.Triggers> </Rectangle> <Image Width="16" Height="15" Source="{Binding Path=GroupState, Converter={StaticResource GroupStateConverter}}" Cursor="Hand" Margin="0 0 3 0"> <i:Interaction.Triggers> <i:EventTrigger EventName="MouseLeftButtonDown" > <GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding ToggleGroupState}"/> </i:EventTrigger> </i:Interaction.Triggers> </Image> </StackPanel> </HierarchicalDataTemplate> 宿主 TreeView 也使用 ContextMenu。 这个想法是,如果右键单击 TreeView 中的某个项目,您将获得它的上下文菜单。 如果您在树视图中的空白处右键单击,您将获得带有较少选项的“默认”上下文菜单。 除了一个奇怪的问题之外,这一切都有效。 正如您所看到的,水平 StackPanel 在图像之间留有边距。如果我右键单击项目之间的空间,则会显示 TreeView 上下文菜单。我希望当我右键单击 StackPanel 本身时,会弹出 HierarchicalDataTemplate 中定义的 ContextMenu。 我发现,如果我为 StackPanel 分配背景颜色,它就可以工作,但如果可能的话,我宁愿避免这种情况。 有什么想法吗? 将Background的StackPanel设置为Transparent,使其在那些空白区域进行命中测试。 将内部嵌入到 . 然后,我将上面的@brunnerh解决方案直接应用到画布上。 它有效。 <ScrollViewer > <Canvas x:Name="Cnvs" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Transparent" /> </ScrollViewer>
如何在 Avalonia UI 中专门针对 Android 版本的应用程序设置 FontSize?
我正在使用 Avalonia UI Community Toolkit 编写一个跨平台应用程序。结果我的一个 TextBlocks 在手机上启动时不适合屏幕。如何设置字体...
填充 WinUI-3 ListView 时出现不可捕获的异常 (0xc000027b)
当我使用 ItemsSource 作为 List 对象填充 ListView(或 ItemsView)时,加载控件时有时会发生崩溃。 崩溃几率上升...
有谁知道如何更改默认的 MAUI .NET 选择的紫色?它会显示在“选择”某些内容的任何地方,例如当前选项卡或弹出菜单。 是不是也...
使用泛型,我有一个基类视图模型 - (MyBaseViewModel),它实现了社区工具包 RelayCommand。这是由 ViewModel 继承的 - MyDataInputControlViewModel :
我想隐藏最大化和最小化按钮,当将 IsMaximizes 和 IsMinimizes 设置为 false 时它可以工作,但是当我想通过添加以下内容来自定义标题栏时: this.ExtendsContentIntoTit...
我在终端中使用命令 dotnet new wpf 创建了一个新的 WPF 应用程序。我现在有两个 xaml 文件,App.xaml 和 MainWindow.xaml,如何打开这些文件,每次我选择它们时,它们就
我正在为课程制作一个 MAUI 移动应用程序。我已经为页面构建了 xaml,它可以正常工作,但我需要页面能够滚动,以便可以更好地看到底部的列表视图。哈...
CollectionView ItemTemplate 中的额外间距问题 - C# XAML .Net MAUI
我正在开发一个项目,将我以前的应用程序(基于Android)移植到.Net(8.0)MAUI。所以,我很容易地移植了一些代码,但是,我面临着一个问题,我无法找到任何帮助......
我正在 MS Learn 上学习 MAUI 和 XAML。 无法使示例代码正常工作。 当我单击按钮并按住鼠标按钮时,比例从 1.0 变为 0.8。 当我松开鼠标按钮时...
我有一个带有数据模板的列表框,其中包含复选框和文本块。如何使用模板中的复选框进行多重选择,以便选择基于 isChecked pr...
Xamarin 找不到“ToolbarItems”的属性、可绑定属性或事件
我试图做的是将工具栏添加到内容页面。 在 StackLayout 下添加此代码后 我试图做的是将工具栏添加到内容页面。 在StackLayout下添加此代码后 <ContentPage.ToolbarItems> <ToolbarItem Icon="plus.png"/> </ContentPage.ToolbarItems> 了解更多信息。如果我将上面的代码放在与顶部相同的位置StackLayout,工具栏就不会出现。 我遇到了错误,并且在其他地方找不到相同的错误。 这是我的xaml文件内容。 <?xml version="1.0" encoding="UTF-8"?> <ContentPage xmlns:ic="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin.Abstractions" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="EodiRoad.SocialPage"> <StackLayout> <ContentPage.ToolbarItems> <ToolbarItem Icon="plus.png"/> </ContentPage.ToolbarItems> <ListView x:Name="socialPostsListView" HasUnevenRows="true" IsPullToRefreshEnabled="true"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <StackLayout Orientation="Vertical" Padding="5"> <StackLayout Orientation="Horizontal" Padding="5"> <ic:CircleImage x:Name="userProfileImage" HeightRequest="50" WidthRequest="50" Aspect="AspectFill" Source="{Binding post.uploader.userProfile.userThumbnail}" /> <Label Text="{Binding post.uploader.username}"/> </StackLayout> <Image x:Name="postImage" Source="{Binding post.image}" Aspect="AspectFill" /> <StackLayout Orientation="Horizontal"> <Button Text="like"/> <Button Text="share"/> </StackLayout> <StackLayout Orientation="Vertical" HorizontalOptions="StartAndExpand"> <Label Text="{Binding post.content}"/> <Label Text="{Binding post.uploadedTime}" TextColor="Gray"/> </StackLayout> </StackLayout> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> </ContentPage> 这就是错误。 No property, bindable property, or event found for 'ToolbarItems' 以及完整的错误。 /Users/UZU/Google Drive/Apps/EodiRoad/EodiRoadXamarin/EodiRoad/EodiRoad/EodiRoad.Views.SocialPage.xaml(5,5): Error: Position 13:5. No property, bindable property, or event found for 'ToolbarItems' (EodiRoad) 我在这里做错了什么?这个错误是什么意思,如何修复它? 我相信你们。 这个片段 <ContentPage.ToolbarItems> <ToolbarItem Icon="plus.png"/> </ContentPage.ToolbarItems> 根据上下文可以表示两件事: 让我们设置此 ContentPage 的 ToolbarItems 属性(或 ToolbarItemsProperty BindableProperty)(如果父节点是 ContentPage,或者 让我们将 Attached BindableProperty ContentPage.ToolbarItemsProperty 设置为当前的 BindableObject。 当您在StackLayout中使用它时,这被解释为第二个,但这样的属性不存在!所以失败了。 将其直接放入 ContentPage 中,它会像魅力一样发挥作用 <ContentPage ...> <ContentPage.ToolbarItems> <ToolbarItem Icon="plus.png"/> </ContentPage.ToolbarItems> <StackLayout .../> </ContentPage> 关于 ToolbarItems 未出现,根据您运行的平台,可能需要将 ContentPage 打包到 NavigationPage 中。 您需要在 ToolbarItems 之外添加 StackLayout 试试这个: <ContentPage xmlns:ic="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin.Abstractions" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="EodiRoad.SocialPage"> <ContentPage.ToolbarItems> <ToolbarItem Icon="plus.png"/> </ContentPage.ToolbarItems> <StackLayout> <!-- Your Content --> </StackLayout> </ContentPage> 检查你没有把它放在<ContentView
我创建了一个简单的 MAUI 项目来对内置 MAUI AppShell 导航进行故障排除。 我有一个 MainPage (绑定到 MainPageViewModel)和 ItemViewModel 的 CollectionView。 我在 XAML 中添加了一个 G...
我正在使用 ItemTemplate 来自定义数据在 ComboBox 中的显示方式。但我的记录数量非常多。因此渲染项目需要很长时间。有没有办法在 W 中的 ComboBox 中添加分页...
我正在尝试构建一个扩展器,其标题位于箭头旁边,控件位于右侧。与此类似: 我已经尝试这样做,但没有关于如何控制的真实信息
我使用 XAML(资源字典)创建了一个像这样的自定义工具提示样式 <question vote="0"> <p>我使用 XAML(资源字典)创建了一个像这样的自定义工具提示样式</p> <pre><code><ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <Style TargetType="ToolTip"> <Setter Property="Background" Value="#404040" /> <Setter Property="Foreground" Value="#FFFFFF" /> <Setter Property="Placement" Value="Bottom" /> <Setter Property="HasDropShadow" Value="True" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ToolTip"> <Grid> <Path Width="12" Height="8" Margin="6,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Data="M9.6 4.53333C9.8 4.26667 10.2 4.26667 10.4 4.53333L16 12H4L9.6 4.53333Z" Fill="#404040" Stretch="Fill" /> <Border Margin="0,10,0,0" Background="{TemplateBinding Background}" BorderBrush="Transparent" BorderThickness="0" CornerRadius="3"> <TextBlock Padding="8" FontSize="12" FontWeight="Normal" Foreground="{TemplateBinding Foreground}" Text="{TemplateBinding Content}" TextWrapping="Wrap" /> </Border> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </code></pre> <p>当应用程序完全最大化并且当我将鼠标悬停在位于屏幕右端的最后一个按钮上时,工具提示并不正好位于按钮正下方,我需要在这里修复什么?</p> <p>问题: 黄色箭头是我将鼠标悬停的位置,工具提示样式的小三角形没有出现在按钮正下方。 <a href="https://i.sstatic.net/DdwJoS84.png" rel="nofollow noreferrer"><img src="https://cdn.txt58.com/i/AWkuc3N0YXRpYy5uZXQvRGR3Sm9TODQucG5n" alt="enter image description here"/></a></p> <p>对于其他按钮: <a href="https://i.sstatic.net/v8sSz3co.png" rel="nofollow noreferrer"><img src="https://cdn.txt58.com/i/AWkuc3N0YXRpYy5uZXQvdjhzU3ozY28ucG5n" alt="enter image description here"/></a></p> </question> <answer tick="false" vote="0"> <p>这不是问题的答案,而是表明该问题没有足够的细节来回答。</p> <blockquote> <p>@EldHasp,当我将应用程序窗口状态更改为最大化状态时,就会发生此问题。将任何控件放在窗口末尾,最大化屏幕后,您可以看到此问题。</p> </blockquote> <p><a href="https://i.sstatic.net/IxUN7g5W.png" rel="nofollow noreferrer"><img src="https://cdn.txt58.com/i/AWkuc3N0YXRpYy5uZXQvSXhVTjdnNVcucG5n" alt="enter image description here"/></a></p> <p><a href="https://i.sstatic.net/xW9LlKiI.png" rel="nofollow noreferrer"><img src="https://cdn.txt58.com/i/AWkuc3N0YXRpYy5uZXQveFc5TGxLaUkucG5n" alt="enter image description here"/></a></p> </answer> </body></html>
有没有一种简单的方法可以在 XAML 中描述相等对象的列表?
我有一个包含 34 个列定义的列表,该列表如下所示: 我有一个包含 34 个列定义的列表,该列表如下所示: <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> 有更简单的方法吗?金额是固定的。 您可以使用 UniformGrid (如命令中所述)。 内容将逐栏添加。 <UniformGrid Columns="34"> <Label/> <!--c1--> <Label/> <!--c2--> <Label/> <!--c3--> <!-- ... --> </UniformGrid> 或者创建一个类,继承自Grid并添加列数的属性。您将保留网格的行为。 class GridWithFixedNbrCol : Grid { public int Columns { get { return ColumnDefinitions.Count; } set { ColumnDefinitions.Clear(); for (int i = 0; i < value; i++) ColumnDefinitions.Add(new ColumnDefinition()); } } } 内容像普通网格一样用Grid.Column添加到右列中 <local:GridWithFixedNbrCol Columns="34"> <Label Grid.Column="2"/> <Label Grid.Column="17"/> <Label Grid.Column="18"/> </local:GridWithFixedNbrCol>
所以我正在构建一个 Wpf Chromium 浏览器,现在我正在制作选项卡。一切正常,但添加选项卡的按钮被视为自己的选项卡,但它应该只是一个按钮。当我把它移到外面时...
无法在 ui 中显示我在 api 中获得的组合框值。 无法在 ui 中显示我在 api 中获得的组合框值。 <controls:DataGridTemplateColumn MinWidth="132" Header="Status" Tag="Status"> <controls:DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0"> <ComboBox x:Name="cbx_Status" FontSize="10" MinHeight="29" Width="140" Background="Transparent" CornerRadius="0" BorderThickness="0" TabIndex="12" ItemsSource="{Binding StatusList}" SelectedValue="{Binding StatusDesc, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" KeyDown="cbx_Status_KeyDown" GettingFocus="cbx_Status_GettingFocus"> <ComboBox.ItemContainerStyle> <Style TargetType="ComboBoxItem"> <Setter Property="Margin" Value="5 -8 0 0"/> <Setter Property="FontSize" Value="11"/> <Setter Property="FontWeight" Value="Normal"/> <Setter Property="FocusVisualSecondaryBrush" Value="Transparent"/> <Setter Property="FocusVisualPrimaryBrush" Value="Transparent"/> <Setter Property="UseSystemFocusVisuals" Value="False"/> </Style> </ComboBox.ItemContainerStyle> </ComboBox> </StackPanel> </DataTemplate> </controls:DataGridTemplateColumn.CellTemplate> 要使 UI 在 ItemsSource 中绑定时自动更新,您需要使用 ObservableCollection public ObservableCollection<object> StatusList { get; } = new();
我有一个 ObservableCollection,其中包含 ViewModel,而 ViewModel 又定义了我的按钮定义。 我已经研究了几个小时,阅读了一篇又一篇文章,但毫无结果。我尝试过使用