Мне нужна помощь!словарь привязки данных <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
, и он никогда не достигает этой точки.
Я просто не могу понять, почему это не работает ... или, может быть, есть другой способ передать словарь в управление?
кстати Я использую MVVM Light
Вы можете добавить PropertyChanged обратного вызова для DependencyProperty и проверить, открытый статический DependencyProperty FirstProperty = DependencyProperty.Register ( "Первый", TypeOf (строка), TypeOf (MyType), новых FrameworkPropertyMetadata ( false, новый PropertyChangedCallback (OnFirstPropertyChanged))); private static void OnFirstPropertyChanged ( DependencyObject отправитель, DependencyPropertyChangedEventArgs e) { СвойствоChangedEventHandler h = PropertyChanged; if (h! = Null) { h (отправитель, новый PropertyChangedEventArgs («Второй»)); } } – Sivakumar
Если я правильно понял, я должен попытаться поймать свойство измененное событие в коде за элементом управления ... Я попытался сделать это: (http: // stackoverflow.com/questions/12798909/how-to-catch-a-property-changed-event-after-binding) без везения –
, тогда это должно быть проблема с вашей привязкой. Определите конвертер и точку останова места в конвертере и убедитесь, что у вас нет каких-либо проблем. Также вы можете проверить окно вывода для ошибок привязки – Sivakumar