我有一個擴展器的列表,我想控制其展開狀態(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