【发布时间】:2012-04-26 08:19:00
【问题描述】:
当我在应用程序的 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。
【问题讨论】:
-
您是否尝试将
SelectedItem的绑定设置为Mode=OneWayToSource? -
现在试过了,没用。而且我无法从 ViewModel 设置 SelectedItem ...
-
抱歉,只是枚举值错误!您应该使用 Mode=OneWay
-
但是当DataGrid中的选中项发生变化时它不会更新,或者?
-
没有。我以为你不想要它。
标签: wpf data-binding datagrid tabcontrol