【发布时间】: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。