xaml 相关问题

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

Visual Studio (2022) 是否有“XAML 设计调试输出”窗口?

我有两个xaml文件: 我可以在设计视图中看到一个(存在于解决方案1中)。 另一个(存在于解决方案2中)我在设计视图中看不到。 第二个xaml没有任何问题:我...

回答 1 投票 0

通过属性绑定禁用组合框的切换按钮或弹出下拉菜单

我希望能够通过在 ViewModel 中设置属性来禁用用户的组合框。 最后,在某些情况下,用户应该只能查看 SelectedItem。 有一些

回答 2 投票 0

WPF 状态栏,拉伸文本块以占用尽可能多的空间

我用 3 个 TextBlock 创建了自己的简单状态栏控件。现在我希望第一个文本块占用尽可能多的可用空间。我似乎还没有完成..现在只需要...

回答 4 投票 0

ViewModel 上的 QueryProperty 在 .NET MAUI 中分配给变量太晚了?

我正在从主页调用页面,并使用 QueryProperty 传递字符串。我想评估这个字符串并根据传递的字符串创建不同的对象列表,所以...

回答 1 投票 0

如何在 C# WPF 中在模糊窗口内制作窗口?

这意味着在程序内部在程序的主要内容之上创建了一个模糊,并在其上方创建了一个具有完全不同内容的窗口。 像这儿: 这个概念的例子......

回答 1 投票 0

XAML 边框 dropdownshadow 未按预期工作

我尝试为我的顶部栏创建下拉阴影效果,但它没有按我想要的方式工作。 问题是当我将主视图背景更改为不同颜色时,下拉阴影效果......

回答 1 投票 0

在 WPF XAML 中禁用样式?

有没有办法以编程方式关闭样式? 例如,我有一个链接到所有文本框的样式 我想添加一些代码到 ac...</desc> <question vote="33"> <p>有没有办法以编程方式关闭样式?</p> <p>举个例子,我有一个链接到所有文本框的样式</p> <pre><code>&lt;Style TargetType=&#34;{x:Type TextBox}&#34;&gt; </code></pre> <p>我想添加一些代码来实际停止使用样式元素,因此基本上恢复到默认的控件样式。</p> <p>我需要一种方法来切换我的样式,这样我就可以通过 C# 代码在 Windows 默认样式和我的自定义样式之间切换。</p> <p>有办法做到这一点吗?</p> <p>谢谢</p> <p><strong>工作解决方案</strong></p> <p><a href="http://sa.ndeep.me/post/switching-between-themes-in-wpf" rel="noreferrer">在 WPF 中切换主题</a></p> </question> <answer tick="true" vote="79"> <p>要将样式设置为默认,</p> <p>在 XAML 使用中,</p> <pre><code>&lt;TextBox Style=&#34;{x:Null}&#34; /&gt; </code></pre> <p>在C#中使用,</p> <pre><code>myTextBox.Style = null; </code></pre> <hr/> <p>如果多个资源的样式需要设置为null,请参阅<strong>CodeNaked的</strong>响应。</p> <hr/> <p>在代码背后,我认为这就是您想要实现的目标:</p> <pre><code>Style myStyle = (Style)Application.Current.Resources[&#34;myStyleName&#34;]; public void SetDefaultStyle() { if(Application.Current.Resources.Contains(typeof(TextBox))) Application.Current.Resources.Remove(typeof(TextBox)); Application.Current.Resources.Add(typeof(TextBox), new Style() { TargetType = typeof(TextBox) }); } public void SetCustomStyle() { if (Application.Current.Resources.Contains(typeof(TextBox))) Application.Current.Resources.Remove(typeof(TextBox)); Application.Current.Resources.Add(typeof(TextBox), myStyle); } </code></pre> </answer> <answer tick="false" vote="23"> <p>您可以注入一个空白样式,该样式优先于其他样式。像这样:</p> <pre><code>&lt;Window&gt; &lt;Window.Resources&gt; &lt;Style TargetType=&#34;TextBox&#34;&gt; &lt;Setter Property=&#34;Background&#34; Value=&#34;Red&#34; /&gt; &lt;/Style&gt; &lt;/Window.Resources&gt; &lt;Grid&gt; &lt;Grid.Resources&gt; &lt;Style TargetType=&#34;TextBox&#34; /&gt; &lt;/Grid.Resources&gt; &lt;/Grid&gt; &lt;/Window&gt; </code></pre> <p>在上面的示例中,只有网格的隐式样式会应用于网格中的文本框。您甚至可以通过编程方式将其添加到网格中,例如:</p> <pre><code>this.grid.Resources.Add(typeof(TextBox), new Style() { TargetType = typeof(TextBox) }); </code></pre> </answer> <answer tick="false" vote="3"> <p>我知道答案已被接受,但我想添加我的解决方案,该解决方案在以下情况下效果很好:</p> <ul> <li>使用 mahapps.metro 的一个主要应用程序</li> <li>从主应用程序导入的附加项目没有引用 mahapps.metro,它作为插件导入(动态加载编译的 .dll)</li> <li>使用 < ToolBar> 将所有内容重新设置为 null,因此 mahapps.metro 样式不会应用于工具栏中的项目。</li> <li>usercontrol 用于为主应用程序提供自定义控件。</li> </ul> <p>在用户控制根目录中设置资源:</p> <pre><code>&lt;UserControl.Resources&gt; &lt;Style x:Key=&#34;ButtonStyle&#34; TargetType=&#34;Button&#34; BasedOn=&#34;{StaticResource {x:Type Button}}&#34; /&gt; &lt;Style x:Key=&#34;ComboBoxStyle&#34; TargetType=&#34;ComboBox&#34; BasedOn=&#34;{StaticResource {x:Type ComboBox}}&#34; /&gt; &lt;/UserControl.Resources&gt; </code></pre> <p>那么工具栏代码可以如下</p> <pre><code> &lt;ToolBar&gt; Block Template: &lt;ComboBox Style=&#34;{StaticResource ComboBoxStyle}&#34;/&gt; &lt;Button Content=&#34;Generate!&#34; Style=&#34;{StaticResource ButtonStyle}&#34;/&gt; &lt;/ToolBar&gt; </code></pre> <p>这成功地将主应用程序样式应用到 < ToolBar></p> 内的控件 </answer> <answer tick="false" vote="1"> <p>在 Xaml 中,您可以通过显式设置样式来覆盖它。在代码隐藏中,您还可以显式设置样式。</p> <pre><code>&lt;TextBox Style=&#34;{StaticResource SomeOtherStyle}&#34;/&gt; myTextBox.Style = Application.Resources[&#34;SomeOtherStyle&#34;]; </code></pre> </answer> </body></html>

回答 0 投票 0

C# Wpf:如何设置菜单项中项目的背景颜色

我想设置菜单项中菜单项的背景颜色这个 我的上下文菜单有一个样式,但它显然不会改变它的颜色 我尝试过更改菜单项

回答 1 投票 0

我如何让我的敌人追赶我的玩家?

我尝试让 10 个敌人移动到我移动玩家的地方,尝试做一些统计,但无法弄清楚。 公共密封部分类 MainPage :页面 { int[] arr_Enemy = 新 int[10]; 直...

回答 3 投票 0

清除项目并将其添加到 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

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