如何动态扩展点击扩展器?
问题描述:
我的扩展器有问题。 (再次...)如何动态扩展点击扩展器?
我有一个数据网格与未知的条目数。每个条目都不同并手动添加。他们每个人都有一个特定的“区域”,他们属于。条目通过“区域”进行分组。分组是通过GroupItem进行的。在这个GroupItem中有一个Expander,带有一个IsExpanded绑定。我也有一个过滤器文本框,其中的条目被过滤,只有正确的一个显示在组中。如果筛选器找到一个条目,则所有扩展器的isExpanded属性应该为true。如果筛选器未找到条目,则isexpanded为false。 这个解决方案的问题是:如果我点击一个扩展器,所有扩展器isExpanded Property设置为true,但它应该只是我单击的那个。
我知道这个bevahiour是因为我只有一个多次创建的Expander。
现在到的问题: 是否有可能只打开扩展器我点击打开,如果筛选器找到一个值,所有扩展器打开?
这是属性:
public bool? FilterExpander
{
get
{
return _FilterExpander;
}
set
{
_FilterExpander = value;
RaisePropertyChanged(() => FilterExpander);
}
}
这是Headerstyle在扩展为:
<Style x:Key="GroupHeaderSettingsStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander x:Name="Exp" IsExpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander}" >
<Expander.Header>
<TextBlock Text="{Binding Name}" Foreground="White"/>
</Expander.Header>
<ItemsPresenter/>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我希望这是可能的,有人能帮助我。
在此先感谢
答
我找到了解决方案。 我只需要将Expander模式设置为“OneWay”。 这种方式工作正常。 这
<expander x:name="Exp" isexpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander}"</expander>
应该
<expander x:name="Exp" isexpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander, Mode=OneWay}"</expander>