アプリケーションのTabControlで使用すると、私が書いたUserControlに問題があります。 TabControlはDataBoundで、テンプレートを使用します。現在のタブ(MouseClickごと)の変更時に、バウンドプロパティはnullに設定されます。現在選択されているアイテムをViewModelに保持したいと思います。私がDataGridまたはListBoxを使用すると、すべてが疑わしいものとして機能します。 ViewModelのSelectedItemプロパティがnullに設定されていません。tabchangeがバインドされた値を変更するのはなぜですか
おそらく私は自分の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}" />
SelectedTab-ChangeでSelectedItem-Propertyが変更されないようにする方法について質問します。私はこれを分析しようとしましたが、その事を完全には理解していません。どうやらSelectedItemChangedは、DataGridのItemsChangedから来ています。
'SelectedItem'のバインディングを' Mode = OneWayToSource'として設定しようとしましたか? –
今すぐ試してみてください。そして、私はViewModelからSelectedItemを設定する可能性はありません... – SACO
申し訳ありませんが、ちょうど間違った列挙値! Mode = OneWayを使用する必要があります –