【问题标题】:VB .Net WPF Binding 2 controls to dictionaryVB .Net WPF Binding 2 控件到字典
【发布时间】:2016-04-19 21:10:50
【问题描述】:

我一直试图在 WPF 表单中进行头部绑定,但我迷失了。我正在尝试在 VB .net 代码中进行绑定。我有接口:

Implements INotifyPropertyChanged

如果我有字典:

Public Property myDict As New Dictionary(Of String, String)

我用一组键值数据填充,然后我想用键填充 WPF 窗口上的组合框。到目前为止使用以下内容:

myCombo.ItemsSource = myDict
myCombo.DisplayMemberPath = "Key"

然后我尝试将组合框链接到文本块,以便组合框显示键,文本块显示值。有很多这些组合框-文本框组合,所以不能真正硬编码或在 xaml 中使用它。我尝试的最后一件事是:

Dim aBinding As New Binding("Value")
aBinding.Source = myDict
myTextBlock.SetBinding(TextBlock.TextProperty, aBinding)

这会显示文本块具有字典中的第一个值,但不会随着组合框而改变。我尝试以相同的方式绑定组合框并使用新的绑定变量,它具有使组合框空白的效果,但似乎无法使其正常工作。

抱歉,如果这是一个非常非常简单的问题,但我对在 WPF 中使用绑定非常陌生,主要是因为我避免了它。

【问题讨论】:

  • 为什么反对在 XAML 中这样做?
  • 因为我有很多并且需要在运行时通过绑定创建控件。
  • 抱歉,我应该更具体一点:在带有 ItemsControl 和一个或多个模板的 XAML 中。
  • 因为我不认为您可以在程序运行时动态地在 xaml 中创建具有绑定的控件。如前所述,我是 wpf 和绑定的新手。
  • 您是否正在创建许多相同类型的控件,或者一堆不同的控件?在 XAML 中执行动态 UI 的常用方法是收集 UI 所代表的任何内容——用户、二手车、汉堡浇头等等——将其绑定到 ItemsControl/ListBox/whatever 的 ItemsSource,并且每个都有一个 DataTemplate列表中的项目类型(如果只有一种项目类型,那很简单)。 itemscontrol/whatever 根据适当的 DataTemplate 为每个列表项实例化 UI。

标签: wpf vb.net


【解决方案1】:

您可以像这样创建 TextBlock 绑定:

Dim aBinding As New Binding("SelectedItem.Value")
aBinding.Source = myCombo
myTextBlock.SetBinding(TextBlock.TextProperty, aBinding)

【讨论】:

  • 好东西!!谢谢 - 好的,是的,我正在引用路径中的对象。现在我明白你的意思了。即使只有 3 行代码,这也很棒!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2015-04-11
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多