有没有办法设置一个WPF手风琴,所以它的所有项目都是默认折叠的,只有当我点击它应该展开的扩展器按钮时?
更新
根据模板,我意识到选择项目的是IsSelected
的{{1}}属性,问题是,当我尝试设置此属性时(从按钮单击处理程序中的代码),我得到了关注AccordionItem
:
InvalidOperationException
堆栈跟踪:
Cannot modify the IsSelected property while item is locked.
答案 0 :(得分:2)
您可以使用SelectedIndex
控件本身的SelectedItem
和Accordion
属性控制选择的项目。
您可以将不可见的AccordionItem
作为第一项,以便最初将所有项目显示为已折叠:
<toolkit:AccordionItem Visibility="Collapsed"/>
要打开特定项目,请在SelectedIndex
处理程序中设置Loaded
属性。或者,如果您正在使用行为,则可以在XAML中完成所有操作:
<toolkit:Accordion>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<ei:ChangePropertyAction PropertyName="SelectedIndex" Value="2"/>
</i:EventTrigger>
</i:Interaction.Triggers>
修改强>
“xmlns:i”命名空间引用System.Windows.Interactivity
,它是WPF4的一部分。 “xmlns:ei”命名空间引用Microsoft.Expression.Interactions
,它是:
将引用添加到项目后,可以使用它来设置命名空间:
<Window ...
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
...>