2012-11-22 37 views
1

我有一對夫妻帶着一個字典XAML綁定是否支持索引屬性?

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

綁定文本框,它拋出一個「無法連接到指數」異常,如果我嘗試使用數據上下文中沒有定義的索引。 有沒有辦法抓住這個錯誤,定義索引(MyFileld [「NotDefinedIndex」] = string.Empty)然後完成綁定?

有沒有什麼辦法綁定在.NET Framework中的索引屬性?

回答

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> 
+0

謝謝!我在類AdditionalFields中添加代碼,添加一個啓用雙向模式{this.MyField [key] = value;}的集合,並修改集合,使密鑰添加到字典中(如果不存在)。與絃樂效果很好。 –