Ste*_*man 2 wpf binding toolkit mvvm
我的ViewModel需要知道View中选择了哪个AccordionItem.所以在ViewModel中我有:
public class ServerListControlViewModel : ObservableObject
{
private int _accordion_index;
public int accordion_index
{
get { return _accordion_index; }
set
{
_accordion_index = value;
RaisePropertyChanged("accordion_index");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在视图中,我有
<toolkitLayout:Accordion SelectedIndex="{Binding accordion_index}">
<toolkitLayout:AccordionItem items go here>
</toolkitLayout:Accordion>
Run Code Online (Sandbox Code Playgroud)
问题?Accordion执行花哨的展开/折叠动画,但是accordion_index的set方法永远不会被调用.此外,我可以在VM的构造函数中设置accordion_index,并且在加载View时将调用get方法,并且将返回我的硬编码值,但Accorion会忽略它,并且始终默认为要扩展的第一个项目.为什么?我是WPF的新手,但相当肯定我已经正确地约束了它.
正如vorrtext指出的那样,您需要将Mode=TwoWay绑定添加到绑定中.Accordion派生自ItemsControl并添加它自己的SelectedIndex属性.
使用ListBox或从Selector派生的任何控件,SelectedIndex将默认绑定双向.他们这样做是因为他们在属性元数据中指定了FrameworkPropertyMetadataOptions.BindsTwoWayByDefault.手风琴不会这样做,所以你必须每次都手动完成.
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |