我需要一些幫助!數據綁定字典<string,int>到依賴屬性
我有建立一個自定義控制和引用加到它類型的DependencyProperty
:
Dictionary<string,int>
並從那裏控制被保持在XAML我做數據綁定到綁定到詞典的控制之外。
這裏有一些代碼片段:誰持有自定義控件控制的 視圖模型
private Dictionary<string, int> _wordsList;
public Dictionary<string, int> WordsList
{
get
{
return _wordsList;
}
set
{
_wordsList = value;
RaisePropertyChanged("WordsList");
}
}
public WordsViewModel()
{
//CalculateWordsDictionary returns a dictionary<string,int>
WordsList = CalculateWordsDictionary(texts);
}
XAML:
自定義控件的背後<local:MyControl WordsList="{Binding Path=WordsList}" />
代碼:
public Dictionary<string, int> WordsList
{
get { return (Dictionary<string, int>)GetValue(WordsListProperty); }
set { SetValue(WordsListProperty, value); }
}
// Using a DependencyProperty as the backing store for WordsList. This enables animation, styling, binding, etc...
public static readonly DependencyProperty WordsListProperty =
DependencyProperty.Register("WordsList", typeof(Dictionary<string, int>), typeof(MyControl), new PropertyMetadata(new Dictionary<string, int>()));
我在DependencyProperty
的集合上設置了一個斷點從來沒有達到這一點。
我只是不知道爲什麼這不起作用......或者也許有其他方式將字典傳遞給控件?
BTW 我使用MVVM光
你可以添加的PropertyChanged回調的DependencyProperty和檢查,公共靜態的DependencyProperty FirstProperty = DependencyProperty.Register( 「第一」, typeof運算(字符串), typeof運算(的MyType), 新FrameworkPropertyMetadata( false, new PropertyChangedCallback(OnFirstPropertyChanged))); private static void OnFirstPropertyChanged( DependencyObject sender,DependencyPropertyChangedEventArgs e) PropertyChangedEventHandler h = PropertyChanged; (發送方,新的PropertyChangedEventArgs(「Second」)); } } – Sivakumar
如果我理解正確,我應該嘗試在控件背後的代碼中捕獲屬性已更改的事件...我試圖這樣做:(http:// stackoverflow。com/questions/12798909/how-to-catch-a-property-changed-event-after-binding)沒有運氣 –
那麼它應該是你的綁定問題。定義轉換器並在轉換器中放置斷點,並確保您的綁定沒有任何問題。您也可以檢查輸出窗口是否存在綁定錯誤 – Sivakumar