我有一个Expander控件,它的IsExpanded属性被绑定到mvvm模型中的一个布尔值。绑定工作正常,直到您不触摸扩展器。一旦单击扩展器中的箭头进行展开,绑定就会停止工作。在模型中将bool ShowPreview设置为false不会折叠扩展器。
<Expander Name="pExpander"
IsExpanded="{Binding Path=ShowPreview,Mode=OneWay}"
Header="Preview">
<TextBlock Text="{Binding Path=Message, Mode=OneWay}"></TextBlock>
</Expander>发布于 2010-02-02 05:06:24
如果你删除了Mode=OneWay,能解决这个问题吗?
在阅读您的其他CTQ时(对GUI的更改不会影响模型),对于如何限制底层数据所看到的更改,我没有一个好的建议。在以下方面有何区别:
myModel.MyProperty = true; // in *your* code behind和
myModel.MyProperty = true; // done by a binding发布于 2010-05-21 17:31:58
让我着迷的是,IsExpanded默认是OneWay,所以
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding Expanded}"/>
</Style>不是我预想的那样。只有添加了Mode=TwoWay,它才能正常工作(即该项开始关注我的Expanded属性并更新它),如
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding Expanded, Mode=TwoWay}"/>
</Style>发布于 2012-05-30 17:54:34
使用Silverlight我可以做到以下几点:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
<Expander Name="pExpander" IsExpanded="True" Header="Preview">
<i:Interaction.Triggers>
<ei:PropertyChangedTrigger Binding="{Binding ShowPreview, Mode=OneWay}">
<ei:ChangePropertyAction PropertyName="IsExpanded" Value="{Binding ShowPreview, Mode=OneWay}"/>
</ei:PropertyChangedTrigger>
</i:Interaction.Triggers>
<TextBlock Text="{Binding Path=Message, Mode=OneWay}"></TextBlock>
</Expander>
<Expander Name="pExpander1" IsExpanded="True" Header="Preview 1">
<i:Interaction.Triggers>
<ei:PropertyChangedTrigger Binding="{Binding ShowPreview, Mode=OneWay}">
<ei:ChangePropertyAction PropertyName="IsExpanded" Value="{Binding ShowPreview, Mode=OneWay}"/>
</ei:PropertyChangedTrigger>
</i:Interaction.Triggers>
<TextBlock Text="{Binding Path=Message1, Mode=OneWay}"></TextBlock>
</Expander>
//...当您手动展开/折叠一个扩展器时,绑定不会丢失...
https://stackoverflow.com/questions/2180046
复制相似问题