gpt4 book ai didi

c# - 将文本框绑定(bind)到字典

转载 作者:太空宇宙 更新时间:2023-11-03 23:16:48 25 4
gpt4 key购买 nike

我正在尝试在每个选项卡中动态创建多个 TabItem,每个选项卡都有一个文本框。然后我想将每个文本框绑定(bind)到一个字典索引。例如

TAB1 | TAB2 | TAB3

TextBox1 | TextBox2 | TextBox3

Dictionary[TAB1] 绑定(bind)到 TextBox1 ... 等

我这样做:

Dictionary<string, string> dic = new Dictionary<string, string>();

Binding binding = new Binding();
binding.Source = dic[id];
binding.Path = ???

TextBox stb = new TextBox()
{
Name = "tb" + id

};
stb.SetBinding(TextBox.Text, binding);

我应该在路径中放什么?

最佳答案

您可以使用 View 模型动态创建它:1. 创建一个主视图模型来保存选项卡。

 public class MainViewModel
{
private ObservableCollection<TabViewModel> tabs = new ObservableCollection<TabViewModel>();


public ObservableCollection<TabViewModel> Tabs
{
get { return this.tabs; }
}
}
  1. 创建将保存要显示的字典和页眉的 TabViewModel。在此示例中,标题是字典的键,但您可以对其进行增强。

    公共(public)类 TabViewModel { private readonly Dictionary字典;

        public TabViewModel(Dictionary<string, string> dictionary)
    {
    this.dictionary = dictionary;
    }

    public string Header { get; set; }
    public string TextValue {
    get { return this.dictionary[Header]; }
    set { this.dictionary[Header] = value; }}
    }
  2. 使用 itemssource 创建选项卡控件:

        <TabControl VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ItemsSource="{Binding Path=Tabs}" >
    </TabControl>
  3. 为其指定样式

<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Path=Header}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate DataType="sOfExamples:TabViewModel">
<TextBox Text="{Binding Path=TextValue}"></TextBox>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>

  1. 分配数据上下文:

    MainViewModel mainViewModel = new MainViewModel(); 字典 dictionary = new Dictionary(); dictionary.Add("Header1", "Header 1 文本"); dictionary.Add("Header2", "Header 2 文本");

            mainViewModel.Tabs.Add(new TabViewModel(dictionary)
    {
    Header = "Header1"
    });
    mainViewModel.Tabs.Add(new TabViewModel(dictionary)
    {
    Header = "Header2"
    });

    this.DataContext = mainViewModel;

如果您想要双向绑定(bind)更新,您可以在 tabviewmodel 上实现 INotifyPropertyChanged。

关于c# - 将文本框绑定(bind)到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37003226/

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