gpt4 book ai didi

c# - 在WPF TreeView 中更改按钮上的字体

转载 作者:行者123 更新时间:2023-12-03 10:16:17 24 4
gpt4 key购买 nike

我有一个模板化的树状 View ,可以按照我的意愿工作,但是我有一个上下文菜单,该菜单允许将第1层节点标记为“默认”。

我有一个datatrigger,它对viewmodel中的一个属性使用react,该属性应将fontweight更改为bold,以直观地显示这是默认节点。但是无论如何,设置者都不会更改按钮上的字体大小!

但是,如果我更改另一个值,例如前景色,则工作正常,字体大小也没有问题。

为什么会这样,有人可以解释吗?如果需要,这是一些代码:

扳机:

<HierarchicalDataTemplate ItemsSource="{Binding Children,Mode=TwoWay,NotifyOnSourceUpdated=True}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top">
<Image x:Name="nodeImg" Source="{Binding Image}" MaxHeight="16" MaxWidth="16"/>
<Button x:Name="nodeButton" Content="{Binding Name}" Command="{Binding Command}" Style="{StaticResource TreeMenuButton}"/>
</StackPanel>

<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TreeViewItem},Path=IsExpanded}" Value="True">
<Setter TargetName="nodeImg" Property="Source" Value="{Binding ImageExpanded}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding IsDefaultConnection}" Value="True">
<Setter TargetName="nodeButton" Property="FontWeight" Value="Bold"></Setter>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>

按钮上的默认样式:
<Style x:Key="TreeMenuButton" TargetType="{x:Type Button}">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="MinHeight" Value="23" />
<Setter Property="MinWidth" Value="75" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="Border"
CornerRadius="0"
BorderThickness="0"
Background="Transparent"
BorderBrush="Transparent">
<ContentPresenter Margin="2"
HorizontalAlignment="Left"
VerticalAlignment="Center"
RecognizesAccessKey="True"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

最佳答案

如果您的代码甚至无法构建,因为您无法将DataTrigger添加到UIElement.Triggers集合中,我会感到惊讶。尝试改用Style(这肯定可以):

<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsDefault}" Value="True">
<Setter Property="TextBlock.FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>

如果您的 DataTemplate确实可以在 UIElement.Triggers集合中工作,请尝试使用类名和属性名:
<Setter Property="TextBlock.FontWeight" Value="Bold" />

关于c# - 在WPF TreeView 中更改按钮上的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18745201/

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