gpt4 book ai didi

wpf - 在 WPF 中,为什么我在 Generic.xaml 中的样式没有应用于我的自定义控件?

转载 作者:行者123 更新时间:2023-12-04 07:02:12 24 4
gpt4 key购买 nike

在 WPF 中,我有一个继承自 TreeView 的自定义控件。代码如下...

public class CustomTRV : TreeView
{
static CustomTRV()
{
//Removed this because I want the default TreeView look.
//......CustomTRV.DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomTRV), new FrameworkPropertyMetadata(typeof(CustomTRV)));
}

public void Connect(string entityHierarchyToken)
{
//build viewModel classes...
this.ItemsSource = new List<ViewModel>()
{
new ViewModel() { TextValue = "aaaa" },
new ViewModel() { TextValue = "bbb" },
new ViewModel() { TextValue = "ccc" },
new ViewModel() { TextValue = "ddd" },
new ViewModel() { TextValue = "eee" },
};
}
}

Generic.xaml 中的内容如下所示...
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTestCustomControl">

<HierarchicalDataTemplate DataType="{x:Type local:ViewModel}">
<TextBlock Foreground="Blue" Text="{Binding Path=TextValue}"></TextBlock>
</HierarchicalDataTemplate>

<Style TargetType="{x:Type local:CustomTRV}">
<Setter Property="ItemContainerStyle">
<Setter.Value>

<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Bold" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Normal" />
</Trigger>
</Style.Triggers>
</Style>

</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

我认为 Generic.xaml 代码应该应用于我的控件,因此应该设置 ItemContainer 属性值。但看起来 ItemContainerStyle 没有任何效果。

注意:来自 Generic.xaml 的 HierarchicalDataTemplate 可以正常工作,因此正在解释文件。

有任何想法吗?

最佳答案

撇开 MVVM 与自定义控件的问题不谈,问题是您已经注释掉了将样式与自定义控件相关联的行:

//CustomTRV.DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomTRV), new FrameworkPropertyMetadata(typeof(CustomTRV)));

因此,您的控件将只有 TreeView 的标准样式s。

关于wpf - 在 WPF 中,为什么我在 Generic.xaml 中的样式没有应用于我的自定义控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1673597/

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