アプリケーションの TabControl で使用するときに、作成した UserControl に問題があります。TabControl は DataBound であり、テンプレートを使用します。現在のタブを (MouseClick ごとに) 変更すると、バインドされたプロパティが null に設定されます。現在選択されている項目を 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 から取得されます。