1

辞書にバインドされたテキストボックスがいくつかあります

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

データコンテキストで定義されていないインデックスを使用しようとすると、「インデックスに接続できません」という例外がスローされます。このエラーをキャッチし、インデックス (MyFileld["NotDefinedIndex"] = string.Empty) を定義してからバインディングを完了する方法はありますか?

.NET Framework でインデックス付きプロパティをバインドする方法はありますか?

4

1 に答える 1

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>
于 2012-11-22T13:03:41.500 に答える