WPF TreeView:如何为所有树元素添加触发器 [英] WPF TreeView: how to add a trigger for all tree elements
本文介绍了WPF TreeView:如何为所有树元素添加触发器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
窗口的右侧包含数据,将其拖动到左侧时,这些项目的颜色变为灰色.我有一个需要隐藏灰色元素的按钮.
The right side of the window contains data, when you drag it to the left, the color of these items turns gray. I have a button that needs to hide gray elements.
图像:数据以灰色突出显示,隐藏按钮处于启用状态,项目被隐藏.
但是,如果我拖动内部treeviewitem,什么也没发生
But, if I drag the inner treeviewitem, nothing happens
如何更改代码,以便将触发器应用于所有元素?
How can you change the code so that triggers apply to all elements?
TreeView XAML:
TreeView XAML:
<TreeView
Grid.Column="2"
x:Name="RevitCategories">
<TreeView.ItemContainerStyle>
<Style
TargetType="TreeViewItem">
<EventSetter
Event="DragOver"
Handler="RevitCategories_OnDragOver" />
<EventSetter
Event="MouseMove"
Handler="RevitCategories_OnMouseMove" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding Path=ShowUsages, UpdateSourceTrigger=PropertyChanged}"
Value="False" />
<Condition
Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Foreground,
Converter={vm:ColorToHiddenConverter}, UpdateSourceTrigger=PropertyChanged}"
Value="False" />
</MultiDataTrigger.Conditions>
<Setter
Property="Visibility"
Value="Collapsed" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate>
<TextBlock
FontSize="{DynamicResource MediumFontSize}"
FontFamily="{DynamicResource FontFamily}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
转换器:
public class ColorToHiddenConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var brush = (Brush) value;
var colorSample = Colors.Gray;
return brush.Equal(colorSample);
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture) => null;
public override object ProvideValue(IServiceProvider serviceProvider) => this;
}
推荐答案
已解决:我更改了</TreeView.ItemContainerStyle>到< TreeView.Resources>而且有效
Solved: I changed </TreeView.ItemContainerStyle> to <TreeView.Resources> and it worked
这篇关于WPF TreeView:如何为所有树元素添加触发器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文