WPF将文本框绑定到字典条目

WPF将文本框绑定到字典条目,wpf,binding,dictionary,Wpf,Binding,Dictionary,我尝试将wpf文本框绑定到放置在viewmodel中的词典。viewmodel用作视图的datacontext。 我找到了很多例子,听起来很简单,但对我来说不起作用 视图: TextBox x:Name=“txbTest”Grid.Row=“10”Grid.Column=“2”Text=“{Binding MyDict[First]}” 视图模型: public Dictionary<string, string> MyDict = new Dictionary<string,

我尝试将wpf文本框绑定到放置在viewmodel中的词典。viewmodel用作视图的datacontext。 我找到了很多例子,听起来很简单,但对我来说不起作用

视图:

TextBox x:Name=“txbTest”Grid.Row=“10”Grid.Column=“2”Text=“{Binding MyDict[First]}”

视图模型:

public Dictionary<string, string> MyDict = new Dictionary<string, string>
        {
            {"First", "Test1"},
            {"Second", "Test2"}
        };

但什么都不起作用,文本框是空的。有什么想法吗?

您的代码中有一个绑定错误,因为
MyDict
不是一个属性。您必须绑定到
属性
,而不能绑定到
字段

System.Windows.Data Error: 40 : BindingExpression path error: 'MyDict' property not found on 'object' ''MainWindow' (Name='')'. BindingExpression:Path=MyDict[First]; DataItem='MainWindow' (Name=''); target element is 'TextBox' (Name='textBox1'); target property is 'Text' (type 'String')
将MyDict
字段
更改为
属性
,如下所示

    private Dictionary<string, string> _MyDict;

    public Dictionary<string, string> MyDict
    {
        get { return _MyDict; }
        set { _MyDict = value; }
    }
以下两种变体将不起作用,因为MyDict[“key”]返回
字符串
,并且
字符串
没有
文本
属性。其他两个变体应该可以工作

Text="{Binding MyDict[First].Text}"
Text="{Binding MyDict[First].Value}"
以下绑定将起作用

Text="{Binding MyDict[First]}"
Text="{Binding Path=MyDict[First]}"

不能绑定到字段。将
MyDict
定义为属性。我已经在我的答案中分享了示例代码。很显然,这是很容易的。谢谢,它很有效。我被一些失败的例子所引导。显然,这是很容易的。谢谢,它很有效。我在一些例子的指导下失败了。你会如何通过编程来完成这项工作?假设我动态创建文本框和字典。
Text="{Binding MyDict[First].Text}"
Text="{Binding MyDict[First].Value}"
Text="{Binding MyDict[First]}"
Text="{Binding Path=MyDict[First]}"