gpt4 book ai didi

WPF Grid.Resources 样式打破了 ResourceDictionary 样式。如何让它们共存?

转载 作者:行者123 更新时间:2023-12-05 00:38:14 25 4
gpt4 key购买 nike

在 WPF 应用程序中,我有一个 ResourceDictionaryStyle为 TargetType 定义 MyCustomControl :

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cc="clr-namespace:MyControlLibrary;assembly=MyControlLibrary" >

<Style TargetType="{x:Type cc:MyCustomControl}">
<Setter Property="Prop1" Value="1" />
<Setter Property="Prop2" Value="2" />
...

问题是我需要为 MyCustomControl 定义一个上下文菜单在页面 XAML 中,如下所示:
   <Grid>
<Grid.Resources>
<ContextMenu x:Key="MyControlContextMenu">
<MenuItem Name="Name1"
Header="Header1"
Click="Cm1_Click"
.../>
....
</ContextMenu>
<Style TargetType="{x:Type ScNamespace:MyCustomControl}">
<Setter Property="ContextMenu" Value="{StaticResource MyControlContextMenu}"/>
</Style>
</Grid.Resources>
...

在这种情况下,虽然我只在网格内的样式定义中分配了一个属性,但根本不应用 ResourceDictionary 样式值。它们被页面资源样式覆盖并被忽略。

如何解决这个问题?也许有一种方法可以在 Grid.Resources 部分引用 ResourceDictionary 来强制查找 ResourceDictionary 样式?

最佳答案

根据您的默认样式创建新样式:

<Style TargetType="{x:Type ScNamespace:MyCustomControl}" BasedOn="{StaticResource {x:Type ScNamespace:MyCustomControl}}">
<Setter Property="ContextMenu" Value="{StaticResource MyControlContextMenu}"/>
</Style>

关于WPF Grid.Resources 样式打破了 ResourceDictionary 样式。如何让它们共存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com