gpt4 book ai didi

C# WPF MVVM 组合框绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 22:00:13 25 4
gpt4 key购买 nike

首先,我要做的是将 ComboBox 与我的源代码进行“简单”绑定(bind)。

结构是这样的:

public class Data
{
public ObservableList<string> List {get;set;}
public string Selected {get;set;}
}

此外,它还实现了 INotifyPropertyChanged 接口(interface)。我的问题是,我找到了几种通过 XAML 执行此操作的解决方案,不幸的是我无法使用 XAML 执行此操作,因为我的 ComboBoxes 必须在运行时生成。

所以我的问题是,如何将我的 ComboBox 绑定(bind)到 Data.List,以及如何将所选项目(值?)绑定(bind)到 Data.Selected,以及这个应该是 TwoWay 这样我的数据类就知道某些东西被选中了。请记住,这必须通过 C# 代码(不幸的是 XAML 不是选项)。

提前致谢。 :)

最佳答案

这很容易。假设 Data 具有属性而不是字段:

public class Data
{
public Data()
{
List = new ObservableCollection<string>
{
"Apple", "Orange", "Lime"
};
}

public ObservableCollection<string> List { get; private set; }
public string Selected { get; set; }
}

你可以这样写:

var comboBox = new ComboBox
{
DataContext = new Data()
};

comboBox.SetBinding(ComboBox.ItemsSourceProperty, new Binding("List"));
comboBox.SetBinding(ComboBox.SelectedItemProperty, new Binding("Selected")
{
Mode = BindingMode.TwoWay
});

要将ComboBox 添加到可视化树中,只需为容器调用适当的方法即可。例如,这将适用于任何 ContentControl(如 Window):

AddChild(comboBox);

关于C# WPF MVVM 组合框绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com