【问题标题】:Does XAML binding support indexed properties?XAML 绑定是否支持索引属性?
【发布时间】:2012-11-22 08:12:49
【问题描述】:

我有几个与字典绑定的文本框

<TextBox Text="{Binding Path=MyField[NotDefinedIndex], Mode=TwoWay}"></TextBox>

如果我尝试使用未在数据上下文中定义的索引,它会引发“无法连接到索引”异常。 有没有办法捕捉到这个错误,定义索引(MyFileld["NotDefinedIndex"] = string.Empty)然后完成绑定?

有没有办法在 .NET Framework 中绑定索引属性?

【问题讨论】:

    标签: c# xaml data-binding


    【解决方案1】:

    在绑定到未定义的索引时隐藏绑定错误可能不是一个好主意;但是,可以定义一个属性来访问字典并在值不存在时返回 string.Empty,这样您就不会收到绑定错误。例如,在您的视图模型中:

    public Dictionary<string, string> MyField { get; set; }
    
    public string this[string key]
    {
        get
        {
            string result;
            if (MyField.TryGetValue(key, out result))
            {
                return result;
            }
    
            return string.Empty;
        }
    }
    

    然后在 XAML 中:

    <TextBox Text="{Binding Path=[NotDefinedIndex], Mode=TwoWay}"></TextBox>
    

    【讨论】:

    • 谢谢!我将您的代码添加到类 AdditionalFields 中,添加了一个集以启用双向模式 {this.MyField[key] = value;} 并修改了该集,以便将键添加到字典中(如果不存在)。非常适合字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2010-09-28
    相关资源
    最近更新 更多