首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF Expander IsExpanded绑定

WPF Expander IsExpanded绑定
EN

Stack Overflow用户
提问于 2010-02-02 04:59:18
回答 4查看 18.5K关注 0票数 14

我有一个Expander控件,它的IsExpanded属性被绑定到mvvm模型中的一个布尔值。绑定工作正常,直到您不触摸扩展器。一旦单击扩展器中的箭头进行展开,绑定就会停止工作。在模型中将bool ShowPreview设置为false不会折叠扩展器。

代码语言:javascript
复制
<Expander Name="pExpander" 
          IsExpanded="{Binding Path=ShowPreview,Mode=OneWay}"
          Header="Preview">
    <TextBlock Text="{Binding Path=Message, Mode=OneWay}"></TextBlock>    
</Expander>
EN

回答 4

Stack Overflow用户

发布于 2010-02-02 05:06:24

如果你删除了Mode=OneWay,能解决这个问题吗?

在阅读您的其他CTQ时(对GUI的更改不会影响模型),对于如何限制底层数据所看到的更改,我没有一个好的建议。在以下方面有何区别:

代码语言:javascript
复制
myModel.MyProperty = true; // in *your* code behind

代码语言:javascript
复制
myModel.MyProperty = true; // done by a binding
票数 7
EN

Stack Overflow用户

发布于 2010-05-21 17:31:58

让我着迷的是,IsExpanded默认是OneWay,所以

代码语言:javascript
复制
<Style TargetType="TreeViewItem">
    <Setter Property="IsExpanded" Value="{Binding Expanded}"/>
</Style>

不是我预想的那样。只有添加了Mode=TwoWay,它才能正常工作(即该项开始关注我的Expanded属性并更新它),如

代码语言:javascript
复制
<Style TargetType="TreeViewItem">
    <Setter Property="IsExpanded" Value="{Binding Expanded, Mode=TwoWay}"/>
</Style>
票数 6
EN

Stack Overflow用户

发布于 2012-05-30 17:54:34

使用Silverlight我可以做到以下几点:

代码语言:javascript
复制
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>
//...

当您手动展开/折叠一个扩展器时,绑定不会丢失...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2180046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档