我有一个扩展器的列表,我想控制其展开状态(IsExpanded),并带有全局切换按钮,该按钮应该在展开/折叠状态之间切换。展开/折叠所有扩展器
到目前为止我所得到的解决方案是通过将扩展器的IsExpanded状态绑定到togglebutton的IsChecked状态来实现的。这工作只要我不手动不切换扩展器。一旦我这样做,那些特定的扩展器不会尊重绑定(切换按钮的IsChecked状态)。
任何想法为什么? XAML有没有一个干净的解决方案?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<StackPanel>
<ToggleButton Name="ExpandAll">Toggle</ToggleButton>
<Expander IsExpanded="{Binding ElementName=ExpandAll,Path=IsChecked, Mode=OneWay}">
Hai
</Expander>
<Expander IsExpanded="{Binding ElementName=ExpandAll,Path=IsChecked, Mode=OneWay}">
Hello
</Expander>
<Expander IsExpanded="{Binding ElementName=ExpandAll,Path=IsChecked, Mode=OneWay}">
Weird
</Expander>
</StackPanel>
</Grid>
</Page>
嗨,史蒂夫,那有效。你知道如果这个解决方案可以修改,如果扩展器werent修复并由ItemsControl生成? – Pradeep 2010-11-09 12:31:10
@Pradeep - 不,我不认为使用这种方法是可能的,因为'MultiBinding'需要一个'Binding'的具体列表。如果这是必需的,那么你可能需要考虑实现一个视图模型或(神禁止)一些代码 – 2010-11-09 13:08:16
@Steve Greatrex:在我们手动展开/折叠之后,OP问题中的绑定是什么破坏? WPF4中有没有比这里更好的方法?任何意见? – VoodooChild 2011-10-10 22:45:45