それぞれがさまざまな設定を持つ一連のタブ (基本的にはそれぞれ) を持つビューを作成したいと考えていContentControl
ます。次に、即座に更新したり、コントロール自体に関連付けられた更新ボタンを使用したりするのではなく、すべてのデータバインディングを更新するボタンが必要です
したがって、私のコントロールは MEF としてエクスポートされResourceDictionary
、以下のようになります。
<ResourceDictionary ...>
<DataTemplate DataType="{x:Type vm:AdminViewModel}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TabControl Grid.Row="0">
<TabItem Header="Tests">
<ContentControl Content="{Binding ResultStorage}"/>
</TabItem>
</TabControl>
<StackPanel Grid.Row="1" Orientation="Horizontal">
<Button Content="Update"/>
<Button Content="Cancel"/>
</StackPanel>
</Grid>
</DataTemplate>
</ResourceDictionary>
TestStorage は次のようになります。
<ResourceDictionary ...>
<DataTemplate DataType="{x:Type data:XmlResultStorage}">
<StackPanel>
<TextBlock Text="Result File Path:"/>
<TextBox Text="{Binding Path=ResultPath, Source={x:Static properties:DataStorage.Default}, UpdateSourceTrigger=Explicit}"/>
<TextBlock Text="Result File Location:"/>
<TextBox Text="{Binding Path=ResultFilename, Source={x:Static properties:DataStorage.Default}, UpdateSourceTrigger=Explicit}"/>
</StackPanel>
</DataTemplate>
私がやりたいのは、更新するボタンが押されて何らかの形で更新(UpdateSource
?)を呼び出すときですが、そのContentControl
方法がわかりません。
理想的な世界では、コード ビハインドはなく、MVVM などを介してすべて実行しますが、それが不可能な場合は、コード ビハインドで問題ありません。
だから私は2つの問題があります.aを介して手動でデータバインディングを更新するResourceDictionary
方法と、その子を介してカスケードする方法を教えてくださいContentControls
。