TemplateBinding在扩展ComboBox的自定义控件中对于SelectedItem不起作用。

36 浏览
0 Comments

TemplateBinding在扩展ComboBox的自定义控件中对于SelectedItem不起作用。

我们创建了一个自定义的ComboBox控件,该控件具有清除ComboBox选择的按钮:\n


\nItemsSource的绑定工作正常,但SelectedItem的绑定不起作用。在谷歌上搜索后,我在这里找到了问题的解决方法。具体来说,将SelectedItem的绑定更改为\nSelectedItem=\"{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem}\"\n可以使其正常工作。\n为什么原始的TemplateBinding在SelectedItem上不起作用,而在ItemsSource上的TemplateBinding却正常工作?

0
0 Comments

在自定义的扩展ComboBox控件中,TemplateBinding不能正常工作,无法绑定SelectedItem属性。这个问题的出现原因是TemplateBinding始终是单向绑定(OneWay),而Binding根据属性的不同可以选择单向绑定(OneWay)或双向绑定(TwoWay)。根据官方文档(http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.bindstwowaybydefault.aspx)和这篇博客(http://blogs.msdn.com/b/wpfsdk/archive/2006/10/19/wpf-basic-data-binding-faq.aspx)中的更多细节,可以了解到这个区别是这个问题的主要原因。在这个讨论中(https://stackoverflow.com/questions/1131222),你可以找到其他的区别。

0