WPF Expander IsExpanded绑定

net*_*aju 14 .net c# wpf expander

我有一个Expander控件,其IsExpanded属性绑定到mvvm模型中的bool.绑定工作正常,直到你不接触扩展器.单击扩展器中的箭头以展开后,绑定将停止工作.在模型中将bool ShowPreview设置为false不会折叠展开器.

<Expander Name="pExpander" 
          IsExpanded="{Binding Path=ShowPreview,Mode=OneWay}"
          Header="Preview">
    <TextBlock Text="{Binding Path=Message, Mode=OneWay}"></TextBlock>    
</Expander>
Run Code Online (Sandbox Code Playgroud)

use*_*116 7

如果你删除Mode=OneWay确实解决了这个问题?

在读取其他CTQ(对GUI的更改不影响模型)时,我没有很好的建议如何限制底层数据看到的更改.有什么区别:

myModel.MyProperty = true; // in *your* code behind
Run Code Online (Sandbox Code Playgroud)

myModel.MyProperty = true; // done by a binding
Run Code Online (Sandbox Code Playgroud)


ime*_*kon 6

在这里抓住我的IsExpandedOneWay默认情况下,所以

<Style TargetType="TreeViewItem">
    <Setter Property="IsExpanded" Value="{Binding Expanded}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

不按我预期的方式工作.只有你添加Mode=TwoWay,它才有效(即项目开始关注我的Expanded财产,并更新它),如

<Style TargetType="TreeViewItem">
    <Setter Property="IsExpanded" Value="{Binding Expanded, Mode=TwoWay}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)