【问题标题】:Bind value between control in different view -- WPF / MVVM在不同视图中的控件之间绑定值 - WPF / MVVM
【发布时间】:2010-05-08 15:40:34
【问题描述】:

在我的 MVVM 应用程序中(在 wpf 中) 我有两个视图,我想将标签的上下文绑定到我的文本框值(在另一个视图中)

SelectorView.xaml 包含此控件: <TextBox x:Name="tbArt" value="XX"/>

DescriptionView.xaml 包含此控件: <label context="{binding on the tbArt value????}">

这是否可能直接而不涉及代码行为和视图模型? 标签会自动刷新吗?

谢谢!

【问题讨论】:

  • 这些视图是独立的 Pages 还是它们托管在同一页面中?
  • 它们在同一个页面中控制

标签: wpf mvvm binding


【解决方案1】:

如果两个控件的数据绑定到同一个属性,则标签将在值更改时刷新。确保属性在更改时触发属性更改。

例如: 在 XAML 中。

 <TextBox x:Name="tbArt" value="{Binding Path=TheProperty, UpdateSourceTrigger=PropertyChanged}"/>
<label context="{binding TheProperty}">

确保在文本框中使用:

UpdateSourceTrigger=PropertyChanged

。否则在焦点从文本框转移之前不会更改属性。

【讨论】:

    【解决方案2】:

    如果您只想在同一窗口/页面内的另一个控件中显示一个控件的值,您可以执行以下操作:

    <TextBox x:Name="tbArt" Text="XX" />
    <Label Content="{Binding Path=Text", ElementName=tbArt}" />
    

    这会将标签文本的内容绑定到名为“tbArt”的控件。您也可以对控件的其他属性执行相同的操作。

    例如,

    <TextBox x:Name="tbArt" Text="XX" Width=33 />
    <Label Content="{Binding Path=Width, ElementName=tbArt}" />
    

    将在文本框中显示“XX”,在标签中显示“33”。

    【讨论】:

      猜你喜欢
      • 2011-12-27
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      相关资源
      最近更新 更多