我需要一些帮助!
我已经构建了一个自定义控件,并在其中添加了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
答案 0 :(得分:1)
您没有发布的重要内容:)您的usercontrol中的绑定是什么?你必须使用某种“本地绑定”,以便你的MyControl绑定到它的依赖属性。您可以像这样使用ElementName绑定:
编辑:这是UserControl的代码,名为MyControl(只是一个片段)
<MyControl x:Name=uc>
<ContentControl Content="{Binding ElementName=uc, Path=WordsList}"/>
答案 1 :(得分:0)
固定!!!!!
所有评论都是问题
我定义了一个DataContext,我完全删除了它。我也注册了属性更改回调
充当魅力!
感谢所有