展开/折叠所有展开器

Pra*_*eep 3 wpf xaml

我有一个扩展器列表,我想用全局切换按钮控制其扩展状态(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>
Run Code Online (Sandbox Code Playgroud)

小智 7

我知道这篇文章很老了.只需将其发布给遇到的其他人.以下代码对我有用.

<Expander IsExpanded="{Binding ElementName=ExpandAll, Path=IsChecked, UpdateSourceTrigger=Explicit}">
</Expander>
Run Code Online (Sandbox Code Playgroud)

这在扩展器动态生成时有效,例如在内部DataGrid.RowDetailsTemplate.