0

我需要一些帮助!

我已经构建了一个自定义控件并添加了一个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

4

2 回答 2

1

您没有发布的重要内容:) 您在用户控件中的绑定是什么?您必须使用某种“本地绑定”,以便您的 MyControl 绑定到它的依赖属性。您可以像这样使用 ElementName 绑定:

编辑:这是名为 MyControl 的 UserControl 的代码(只是一个片段)

 <MyControl x:Name=uc>
   <ContentControl Content="{Binding ElementName=uc, Path=WordsList}"/>
于 2013-07-30T06:41:29.493 回答
0

固定的!!!!!

所有的评论加在一起就是问题

我定义了一个 DataContext,我完全删除了它。我还注册了属性更改回调

发挥魅力!

谢谢大家

于 2013-07-30T12:48:36.937 回答