0

アプリケーションの 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 から取得されます。

4

1 に答える 1

0

現在のタブを変更すると、古いタブはビジュアル ツリーからアンロードされます。これはいいえDataGrid、いいえという意味SelectedItemです。

この動作を停止するか、 PropertyChangedCallbackで null ではない最後の SelectedItem を DP から簡単にバックアップすることができます。

于 2012-04-26T11:28:16.500 に答える