xaml 相关问题

可扩展应用程序标记语言(XAML)是一种基于XML的声明式语言,用于在各种框架中初始化结构化值和对象。当问题是关于具有特定框架的XAML的使用时,还应该提供框架的标签,例如, [wpf](Windows Presentation Foundation),[silverlight],[windows-phone],[windows-store-apps](Windows 8商店应用),[win-universal-app],[xamarin.forms]或[工作流程 - 基础]

清除项目并将其添加到 ObservableCollection 时,不会执行 DataTemplateSelector

在我的 .Net Maui 应用程序中,我想使用 DataTemplateSelector 显示存储在 ObservableCollection 中的数据。因此我使用微软的文档创建了一个示例。 https://learn.microsoft.co...

回答 2 投票 0

.NET MAUI 条目控件禁用时的颜色

在 Android 14(及更早版本)的深色主题中,Entry 控件中的文本已通过 IsEnabled = False 禁用,颜色为灰色。这在黑色背景下很难阅读。我没有

回答 1 投票 0

菜单项样式

我有一个包含以下项目的上下文菜单 我有一个包含以下项目的上下文菜单 <ContextMenu x:Name="NotificoContextMenu" x:Shared="false" x:Key="SysTrayMenu" x:FieldModifier="public" Loaded="NotificoContextMenu_Loaded" Style="{DynamicResource conte}"> <MenuItem Header="Connect" x:Name="ConnectMenuItem" x:FieldModifier="public" /> <MenuItem Header="Ping" Command="{Binding PingCommand}"/> <MenuItem Header="Show Window" Command="{Binding ShowWindowCommand}" /> <Separator /> <MenuItem Header="Exit" Command="{Binding ExitApplicationCommand}" /> </ContextMenu> 对于 ConnectMenuItem,我从代码中添加菜单项 我有一个上下文菜单样式,它适用于所有菜单项,除了我从代码中添加的菜单项,我应该做什么 这是我的上下文菜单的样式 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Style TargetType="{x:Type ContextMenu}" x:Key="conte"> <Setter Property="Background" Value="{DynamicResource PrimaryDark}" /> <Setter Property="Foreground" Value="{DynamicResource Secendery}" /> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="True" /> <Setter Property="HasDropShadow" Value="True" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ContextMenu}"> <Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding Foreground}" BorderThickness="0.5" CornerRadius="5"> <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" /> </Border> <ControlTemplate.Triggers> <Trigger Property="HasDropShadow" Value="true"> <Setter TargetName="Border" Property="Padding" Value="0,3,0,3" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary> 日夜寻找时发现了一些灵魂出处 这是完整的 Windows 资源文件: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Style TargetType="{x:Type ContextMenu}" x:Key="conte"> <Setter Property="Background" Value="{DynamicResource PrimaryDark}" /> <Setter Property="Foreground" Value="{DynamicResource Secendery}" /> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="True" /> <Setter Property="HasDropShadow" Value="True" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ContextMenu}"> <Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding Foreground}" BorderThickness="0.85" CornerRadius="5"> <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle"> </StackPanel> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="{x:Type MenuItem}" > <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="true"> <DockPanel> <ContentPresenter x:Name="Icon" ContentSource="Icon" Margin="4,0,6,0" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/> <Path x:Name="GlyphPanel" Fill="{TemplateBinding Foreground}" FlowDirection="LeftToRight" Margin="10,0,0,0" Visibility="Collapsed" VerticalAlignment="Center"/> <ContentPresenter x:Name="content" ContentSource="Header" Margin="10,3" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </DockPanel> <Popup x:Name="PART_Popup" AllowsTransparency="True" Focusable="false" HorizontalOffset="0" IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}" Placement="Left" VerticalOffset="0"> <Border BorderThickness="0.85" CornerRadius="2" BorderBrush="{DynamicResource Secendery}" Background="{TemplateBinding Background}"> <ScrollViewer x:Name="SubMenuScrollViewer" CanContentScroll="true" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}"> <Grid RenderOptions.ClearTypeHint="Enabled"> <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Cycle" Grid.IsSharedSizeScope="true" Margin="0" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.TabNavigation="Cycle"/> </Grid> </ScrollViewer> </Border> </Popup> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="TextBlock.Foreground" Value="White" TargetName="content"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>

回答 1 投票 0

可绑定属性上的 StringFormat 不显示附加文本

所以我在.net MAUI XAML 中创建了一个具有可绑定属性的自定义控件。 其一,我希望在特定视图上的文本后面显示 % 作为后缀,但 StringFormat 不显示它....

回答 1 投票 0

如何在 XAML 中格式化 TimeSpan

我正在尝试格式化绑定到 TimeSpan 属性的文本块。如果该属性的类型为 DateTime,则该方法有效,但如果该属性的类型为 TimeSpan,则该方法失败。我可以使用转换器来完成它。但我是

回答 12 投票 0

在uwp中的xaml布局中访问.resx字符串资源

我想直接在我的xaml布局中访问资源,官方文档给了我们一些糟糕的例子,所以我无法让它工作。假设以下 Resources.resw : 我可以从...访问我的字符串资源

回答 2 投票 0

类型引用找不到名为的公共类型

我在 xaml 中收到类似“类型引用无法找到名为“Sign”的公共类型”的错误。我该如何解决它。 Sign 类位于同一个程序集中。 我在 xaml 中收到类似“类型引用无法找到名为“Sign”的公共类型”的错误。我该如何解决它。 Sign 类位于同一个程序集中。 <DataTemplate DataType="{x:Type local:Sign}"> <Expander Padding="4" IsExpanded="{Binding RelativeSource={ RelativeSource Mode=FindAncestor, AncestorType={ x:Type ListBoxItem}}, Path=IsSelected}"> <Expander.Header> <TextBlock Text="{Binding Name}" ... /> </Expander.Header> <DockPanel LastChildFill="True"> <Border DockPanel.Dock="Left" CornerRadius="16" BorderBrush="WhiteSmoke" Background="AliceBlue" BorderThickness="5" HorizontalAlignment="Center" VerticalAlignment="Center"> <Image Source="{Binding Icon}" Width="90" Height="90" Stretch="Fill" /> </Border> ... </DockPanel> </Expander> 如果类型与您正在修改的 XAML 驻留在同一程序集中,请在导入命名空间时省略 clr 命名空间的程序集段。 做 xmlns:local="clr-namespace:NamespaceContainingSignClass" 不要 xmlns:local="clr-namespace:NamespaceContainingSignClass;assembly=AssemblyContainingSignClassAndXAML" 对于那些在我的船上没有得到谷歌上这个错误的前 1,00 个结果帮助的人......就我而言,这与 smelch 的建议完全相反:我必须在我的 xmlns 声明结束。我猜可能是因为我的特殊情况 - 我的数据模板位于独立的资源字典 xaml 文件中。没有把握。我只知道它不起作用直到我添加了程序集信息,所以对于那些在那里挣扎的人来说,请重击一下,看看它是否有效。我不想深入探讨为什么,它就是这样。 检查xaml文件的根标签是否具有将类Sign映射到local别名的命名空间:xmlns:local="clr-namespace:NamespaceContainingSignClass" 检查班级Sign是否被标记public 检查类Sign是否有无参构造函数 仔细检查这个问题的所有答案 - 我确信其中一个是正确的,但我不知道哪一个对我有用。 保存项目,关闭 Visual Studio,然后重新打开 Visual Studio。 瞧,它现在神奇地工作了,尽管没有改变任何东西。 低声咒骂微软,然后继续你的生活...... 现在遇到这个错误。问题是我从程序集中引用的类位于具有更高框架级别的程序集中(4.7.2 与 4.6)。版本对齐解决了问题。 另一件事要检查,因为我今天刚刚解决了同样的问题...出于某种原因,我们有一个 xaml 文件,它添加了 Resource 而不是 Page 的构建操作。在该文件中,并且仅在该文件中,我们必须在命名空间声明中使用 assembly= 才能使其正常工作。自从 13 年前添加该文件以来,情况一直如此,其中的所有内容似乎都运行良好,直到现在我们才发现任何问题。 令我们困惑的是,我们正在创建 .NET 6 版本的 DLL,而新项目具有所有相同的代码和 xaml 文件,但不是该项目的 .NET Framework 版本的直接克隆。按照其设置方式,相关 XAML 文件的编译方式与所有其他文件相同,这意味着它不能在命名空间中包含 assembly= 部分。因此,有一段时间,我被误导,认为这可能是 .NET 6 与 .NET Framework 项目的差异。幸运的是,我注意到 XAML 文件在旧版本的项目中被设置为 Resource,一旦我修复了这个问题,在项目的两个版本中一切都工作正常(已删除 assembly=)。 我刚刚发现了另一个问题,可能会导致此问题。 允许在项目名称中使用点,例如 FancyTrainsimTools.Desktop 是有效的项目名称。如果您在项目中使用文件夹,您可能会得到如下结构: FancyTrainsimTools.Desktop.Logic 如果您定义引用此文件夹中的项目的数据模板,则会导致错误消息。我还使用了分层数据模板,但这给出了略有不同的消息。 解决方法: 通过删除点来重命名您的项目: FancyTrainsimToolsDesktop 编辑:我尝试再次重现该问题,以便报告错误,但现在一切正常......所以谜团尚未解决,并且不清楚如何创建解决方案...... 对于 .Net 框架。 检查另一个类,以防丢失的类即使在那里也无法解决,并且它在 NuGet 中,问题可以在参考 HintPaths 中。在文本编辑器中打开 .csproj 文件,查看包引用是否与 HintPath 匹配。 例如: <Reference Include="System.IO.Pipelines, Version=7.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> <HintPath>..\packages\System.IO.Pipelines.7.0.0\lib\net462\System.IO.Pipelines.dll</HintPath> </Reference> HintPath 需要更新以引用版本 7.1.0 的文件夹,就像参考一样。 有时 Visual Studio 不会更新 HintPath,这会带来麻烦。 我已经通过以下方式解决了这个问题: 将类移至 xaml 后面的代码中 继承wpf类即可识别(如:IValueConverter)

回答 9 投票 0

在 C# 代码而不是 XAML 中声明的 WPF 属性

由于某些特殊原因,我在 C# 代码中声明了一个绑定,而不是像往常一样在 XAML 中声明它。我面临的问题是,当我仅更改对象的一个属性时,

回答 1 投票 0

如何知道 WinUI 3/WinAppSDK 中是否按下了某个键(CoreWindow.GetKeyState 替代方案)?

在我的旧 UWP 应用程序中,我可以在处理程序中检查键盘按键的状态,如下所示: void MyControl::UserControl_KeyDown(winrt::IInspectable const& /*发送者*/, winrt::KeyRoulatedEventArgs const&am...

回答 1 投票 0

WINUI 3 将字体应用于所有控件

我想更改 WinUI 3 应用程序中的字体。到处都是。我在这里找到了一些答案,但它们似乎都将字体应用于目标,如 TextBlock、Button 等。我即将设计的应用程序......

回答 2 投票 0

带有绑定文本的 WPF 文本块不会滚动

我的 TextBlock 中的文本绑定到我的代码中的元素。但是,当我第一次打开窗口时,文本块完全是空的。当我添加文本时,我需要 ScrollViewer 来允许我滚动...

回答 2 投票 0

无法解析资源

我在 WPF 中使用 MaterialDesign for XAML 包。当我运行我的应用程序时,所有样式和控件都会按预期呈现。然而,在 XAML 设计器中,我有很多错误,例如“The

回答 3 投票 0

WinUI3 列表查看所选项目

我正在使用像这样的WinUI3 ListView来加载文件列表: 我正在使用像这样的 WinUI3 ListView 来加载文件列表: <ListView ItemTemplate="{StaticResource Template2}" ItemsSource="{x:Bind Files,Mode=OneWay}" IsItemClickEnabled="True" x:Name="List2" SelectionMode="Multiple" /> <DataTemplate x:Key="Template2" x:DataType="local:FileItem"> <Grid> .... TextBlocks that bind to properties in FileItem </Grid> </DataTemplate> 现在,如何配置我的 DataTemplate 以便默认选择部分(或全部)项目? 我应该使用的数据模板中有特殊值吗? 您可以在 ListViewItem 中使用 ItemTemplate。 假设您的 FileItem 看起来像这样: public partial class FileItem : ObservableObject { [ObservableProperty] private string _name = string.Empty; [ObservableProperty] private bool _isSelected; } 和你的 ViewModel: public partial class MainPageViewModel : ObservableObject { [ObservableProperty] private ObservableCollection<FileItem> _files = new() { new FileItem { Name = "File1" }, new FileItem { Name = "File2", IsSelected = true, }, new FileItem { Name = "File3"}, }; } 在 XAML 中: <Page.Resources> <DataTemplate x:Key="Template2" x:DataType="local:FileItem"> <ListViewItem IsSelected="{x:Bind IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> <TextBlock Text="{x:Bind Name, Mode=OneWay}" /> </ListViewItem> </DataTemplate> </Page.Resources> <ListView Grid.Row="1" IsItemClickEnabled="True" ItemTemplate="{StaticResource Template2}" ItemsSource="{x:Bind ViewModel.Files, Mode=OneWay}" SelectionMode="Multiple" /> 但不幸的是,这不起作用,因为加载时 ListViewItem 会将其 IsSelected 属性重置为 false 。我不确定这是一个错误还是设计使然。 作为解决方法,您可以在加载每个 ListViewItem 后进行绑定: <Page.Resources> <DataTemplate x:Key="Template2" x:DataType="local:FileItem"> <ListViewItem Loaded="ListViewItem_Loaded"> <TextBlock Text="{x:Bind Name, Mode=OneWay}" /> </ListViewItem> </DataTemplate> </Page.Resources> 然后在代码隐藏中: private void ListViewItem_Loaded(object sender, RoutedEventArgs e) { if (sender is not ListViewItem listViewItem) { return; } listViewItem.SetBinding( ListViewItem.IsSelectedProperty, new Binding { Path = new PropertyPath("IsSelected"), Mode = BindingMode.TwoWay, Source = listViewItem.DataContext, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, }); } 顺便说一句,我正在为 ViewModel 使用 CommunityToolkit.Mvvm NuGet 包,但我希望这能让您了解如何解决问题。

回答 1 投票 0

滚动条和...文本框的奇怪问题? (垂直内容对齐)

我有这个奇怪的问题,我不明白是什么原因造成的。在我的整个项目中,文本框无法垂直居中,无论我使用什么,padding,VerticalContentAlign...

回答 1 投票 0

如何将图片标题放在NavigationView的顶部?

如何在 Microsoft.UI.Xaml.Controls(UWP 应用程序)中的 NavigationView 顶部制作标题? 我设法使用 PaneHeader 属性制作标题,但我希望将图形放在 m 上方...

回答 1 投票 0

.NET MAUI Switch 颜色变化不持久

我想在.NET MAUI应用程序中实现一个开关。然而,我还想调整颜色。 不幸的是,这些变化首先出现: 现在,关闭开关: 再次,转动开关...

回答 1 投票 0

控件模板中的 WPF XAML 菜单绑定

我有一个自定义菜单,其中的 ItemsSource 绑定到我的视图模型中的 ObservableCollection。为了自定义菜单,我在样式中使用 ControlTemplate,并且 ControlTemplate 包含一个实验室...

回答 1 投票 0

dataGrid 中的嵌套列表绑定

我正在寻找一种解决方案,将嵌套列表绑定到 DataGrid 以将它们显示在单独的列中。 视图模型 公共类ParametersDataGridViewModel:ViewModelBase { 公共可观察集合<...

回答 1 投票 0

带有 Xamarin Forms 中 XAML 元素参数的构造函数

是否可以使用依赖注入服务使用参数化构造函数创建 XAML 元素?或者还有其他方法来传递依赖关系吗?我想要有一些depe的行为...

回答 2 投票 0

为什么我的集合视图不占据框架的整个宽度。 .net 毛伊岛

我一直在尝试为我玩的纸牌游戏制作一个简单的计分应用程序。我只是想了解基本结构。所以我创建了一个带有集合视图的框架,其中包含一些模拟数据来表示......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.