【问题标题】:WPF - Binding between usercontrolWPF - 用户控件之间的绑定
【发布时间】:2016-07-16 08:19:44
【问题描述】:

我有一个用户控件(比如 A),其中有两个 ContentPresenter,每个都绑定到另一个用户控件(比如 B 和 C)。

在两个 UserControl(比如 B)之一中,我有一个 MyItem 列表框。

         <ListBox  ItemsSource="{Binding MyItemList}" SelectedItem="{Binding SelectedMyItem}">

我的物品代码:

Public Class MyItem
   Implements INotifyPropertyChanged

   Private m_Name As Integer
   Public Property Name As Integer
      Get
      Return m_Name 
      End Get
      Set(value As Integer)
         m_Name = value
      End Set
   End Property

   ...

End Class

在另一个(比如 C)中,我有要绑定到 SelectedItem 属性(比如 MyItem.Name)的文本框。

        <TextBox Text="{Binding SelectedItem.Name}"/>

以某种方式可能吗?因为我一个也找不到。

【问题讨论】:

    标签: wpf vb.net user-controls


    【解决方案1】:

    你所说的几乎是不可能的。

    将文本框文本绑定到视图模型 c 中的某个属性。将列表选定项绑定到视图模型中的某个属性 b。

    在更改选定的项目时,将带有参数的事件作为 Name值为字符串。处理视图模型 c 中的事件并使用接收到的 Name 参数更新文本框文本。

    这样就可以了。

    另一种可能的方法是在 A viewmodel 中创建 b 和 c 视图模型实例,并在 bviewmodelinstance.selectedListItem 属性更改时更新 cviewmodelinstance.TextboxPropertyName。

    【讨论】:

    • 感谢您的回答。我对您提到的第二种方法非常感兴趣,因为我几乎在 A 视图模型中创建了 B 和 C 视图模型。但是我不明白如何在另一个属性更改时更新一个属性。在这种情况下,您能否写一个文本框绑定(在 XAML 中)的示例?谢谢
    • 其实我不知道vb。只需绑定到相应视图模型中的字符串属性即可。订阅父视图模型中的 viewmodelinstance.propertychanged。在 propertychanged 上使用 e 检查属性名称。如果属性名称 == 您需要的属性,则设置绑定到文本框文本属性的字符串。
    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2011-10-16
    • 2011-04-04
    • 2014-01-14
    相关资源
    最近更新 更多