数据绑定字典<string,int>到依赖属性</string,int>

时间:2013-07-30 06:31:13

标签: c# wpf data-binding mvvm dependency-properties

我需要一些帮助!

我已经构建了一个自定义控件,并在其中添加了DependencyProperty类型:

Dictionary<string,int>

并从控件所在的XAML中进行数据绑定以绑定到控件外的Dictionary。

这里有一些代码片段: 查看持有自定义控件的控件的模型

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

固定!!!!!

所有评论都是问题

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

充当魅力!

感谢所有