2013-07-30 2 views
0

Мне нужна помощь!словарь привязки данных <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

+0

Вы можете добавить 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

+0

Если я правильно понял, я должен попытаться поймать свойство измененное событие в коде за элементом управления ... Я попытался сделать это: (http: // stackoverflow.com/questions/12798909/how-to-catch-a-property-changed-event-after-binding) без везения –

+0

, тогда это должно быть проблема с вашей привязкой. Определите конвертер и точку останова места в конвертере и убедитесь, что у вас нет каких-либо проблем. Также вы можете проверить окно вывода для ошибок привязки – Sivakumar

ответ

1

важных вещи вы не отправляли :) Что ваше связывание в вашем UserControl? вы должны использовать какую-то «локальную привязку», чтобы ваш MyControl привязывался к свойству зависимости. Вы можете использовать ElementName связывания, как это:

EDIT: Вот код для UserControl под названием MyControl (только отрывок)

<MyControl x:Name=uc> 
    <ContentControl Content="{Binding ElementName=uc, Path=WordsList}"/> 
+0

. Я опубликовал фактическое определение пользовательский элемент управления в xaml пользовательского элемента управления находится внутри. «Local» просто пространство имен настраиваемого элемента управления, поэтому я могу получить к нему доступ через xaml. Теперь я изменил имена, чтобы они были яснее:

+0

вы меня не поняли, важный код - это определение xaml вашего пользовательского контроля. для чего мой фрагмент. и потому что я не знаю, где Wordslist связывается с вашим пользовательским контролем, я привязываю его к ContentControl. ваша привязка к вашему пользовательскому контролю правильная, но это не проблема. по крайней мере, вы могли бы рассказать нам, что вы хотите достичь с помощью свойства зависимостей – blindmeis

+0

У меня есть пользовательский элемент управления, который содержит пользовательский элемент управления в своем xaml. Я хочу создать пользовательский элемент управления облаками тегов, который получает через свойство зависимостей словарь (слово и его число вхождения). Поэтому я действительно не понимаю, что вы предлагаете решить эту проблему. –

0

Fixed !!!!!

Все комментарии вместе был вопрос

я там была определена DataContext, я удалил его полностью. Также я зарегистрировал изменение измененного свойства недвижимости

работал как очарование!

Спасибо всем

+0

не стесняйтесь публиковать свой плохой и хороший код здесь снова – blindmeis

Смежные вопросы