当我在应用程序的 TabControl 中使用它时,我编写的 UserControl 有问题。TabControl 是 DataBound 并使用模板。在更改当前选项卡(每次鼠标单击)时,绑定属性设置为空。我想将当前选定的项目保留在 ViewModel 中。如果我使用 DataGrid 或 ListBox,一切都会按预期工作。ViewModel 的 SelectedItem-Property 未设置为 null。
也许我必须设置我的 DependencyProperty 不同?涉及的属性定义如下:
SelectedItemProperty = DependencyProperty.Register("SelectedItem", typeof(object), typeof(BusinessListEditor), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
ItemsSourceProperty = DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(BusinessListEditor), new FrameworkPropertyMetadata(null));
此属性直接绑定到 UserControl 内的 DataGrid。
<DataGrid x:Name="dgDataGrid"
ItemsSource="{Binding ItemsSource,
ElementName=ucBusinessListEditor}"
SelectedItem="{Binding SelectedItem,
ElementName=ucBusinessListEditor}"
Style="{Binding DataGridStyle,
ElementName=ucBusinessListEditor}" />
我如何防止 SelectedItem-Property 在 SelectedTab-Change 上发生更改的问题。我试图分析这一点,但并不完全理解这个案例。SelectedItemChanged 不知何故来自 DataGrid 的 ItemsChanged。