我需要一些帮助!数据绑定字典<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
的集合上设置了一个断点从来没有达到这一点。
我只是不知道为什么这不起作用......或者也许有其他方式将字典传递给控件?
BTW 我使用MVVM光
你可以添加的PropertyChanged回调的DependencyProperty和检查,公共静态的DependencyProperty FirstProperty = DependencyProperty.Register( “第一”, typeof运算(字符串), typeof运算(的MyType), 新FrameworkPropertyMetadata( false, new PropertyChangedCallback(OnFirstPropertyChanged))); private static void OnFirstPropertyChanged( DependencyObject sender,DependencyPropertyChangedEventArgs e) PropertyChangedEventHandler h = PropertyChanged; (发送方,新的PropertyChangedEventArgs(“Second”)); } } – Sivakumar
如果我理解正确,我应该尝试在控件背后的代码中捕获属性已更改的事件...我试图这样做:(http:// stackoverflow。com/questions/12798909/how-to-catch-a-property-changed-event-after-binding)没有运气 –
那么它应该是你的绑定问题。定义转换器并在转换器中放置断点,并确保您的绑定没有任何问题。您也可以检查输出窗口是否存在绑定错误 – Sivakumar