我有一个TreeView
,我在其中使用HierarchicalDataTemplate
. 有了这个,我为我的不同项目(所有相同类型)着色。
通过单击CheckBox
页面中的 a,我想隐藏一些项目(具有特定属性)。我已经测试了很多代码,但没有一个能正常工作。我正在寻找答案...
这是我的代码示例:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
TreeElements tRoot = new TreeElements("Root", false);
TreeElements t1 = new TreeElements("Node 1", false);
TreeElements t11 = new TreeElements("Node 1-1", true);
t1.Children.Add(t11);
TreeElements t12 = new TreeElements("Node 1-2", false);
t1.Children.Add(t12);
tRoot.Children.Add(t1);
TreeElements t2 = new TreeElements("Node 2", false);
TreeElements t21= new TreeElements("Node 2-1", false);
TreeElements t211 = new TreeElements("Node 2-1-1", false);
t21.Children.Add(t211);
t2.Children.Add(t21);
tRoot.Children.Add(t2);
trv.Items.Add(tRoot);
}
}
public class TreeElements
{
public string Description { get; set; }
public List<TreeElements> Children { get; set; }
public TreeElements(string description, bool error)
{
Description = description;
_error = error;
Children = new List<TreeElements>();
}
private bool _error;
public bool Error
{
get
{
bool bValue = _error;
foreach (TreeElements child in Children)
bValue = bValue || child.Error;
return bValue;
}
}
}
和 XAML :
<Window x:Class="WpfApplication2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<HierarchicalDataTemplate x:Key="HDT_items" ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Description}" x:Name="txt" />
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Error}" Value="true">
<Setter TargetName="txt" Property="Foreground" Value="Red" />
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox x:Name="chk">Mask some items</CheckBox>
<TreeView Grid.Row="1" x:Name="trv" ItemTemplate="{StaticResource HDT_items}" />
</Grid>
</Window>
我希望,当检查复选框时,不要显示出错误= false但不更改数据源的节点。有可能吗,怎么做?