OK、あなたのご意見から、私は各コンテキストに独自のXAMLファイルを持たせたいと思っていますが、共通のテンプレートを参照するようにしています。それでは、次のようにすることができます:
CommonControlなどの共通テンプレートを設定します。XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Rectangle Grid.Row="0" Grid.Column="0" Fill="Yellow" />
<TextBlock Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" Text="This is some fixed text"/>
<ComboBox Grid.Row="0" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<StackPanel Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center">
<CheckBox>My first checkbox</CheckBox>
<CheckBox>My second checkbox</CheckBox>
</StackPanel>
<ContentControl Grid.Row="1" Grid.Column="1" Content="{Binding Path=SpecificPart1, RelativeSource={RelativeSource AncestorType=UserControl}}"/>
<Ellipse Grid.Row="1" Grid.Column="2" Fill="Blue"/>
</Grid>
これはコンテキスト固有のUIが表示されるグリッドの行1、列1(下部中央のウィンドウ)を除いて、すべてのグリッド位置に共通のUIを構成する様々なUI要素を有します。内の複数の位置がある場合
public object SpecificPart1
{
get { return this.GetValue(SpecificPart1Property); }
set { this.SetValue(SpecificPart1Property, value); }
}
public static readonly DependencyProperty SpecificPart1Property = DependencyProperty.Register(
"SpecificPart1", typeof(object), typeof(CommonControl), new PropertyMetadata(false));
:背後にあるコードで今すぐ
は、あなたがテンプレートに供給されるコンテキスト固有のUIを許可するようにした依存関係オブジェクトをCommonControl.xaml.cs設定しましたコンテキスト固有のUIを配置したい場合は、もう一方の依存プロパティをここに追加することができます。
他の多くのXAMLファイルを好きなだけ設定することができます。これらのファイルはすべてこれを参照し、独自のUIを挿入してさまざまな部分に移動します。ここに緑の斜体のテキストを置く例があります。 In MySpecificControl.xaml:
<my:CommonControl>
<my:CommonControl.SpecificPart1>
<TextBlock Foreground="DarkGreen" FontStyle="Italic" FontSize="14">This is my context specific UI</TextBlock>
</my:CommonControl.SpecificPart1>
</my:CommonControl>
申し訳ありませんが、あなたの解決策はよく分かりません。そこに共通のコントロールはどこにありますか?私が探しているのは、すべてのビューで使用されているすべてのコントロールを(おそらくテンプレート内に)書き込んだり、それぞれのユースケースに対して複数のビューを持って基本テンプレートを追加したいものだけを指定する方法です。この目標を達成するための簡単な方法はありますか? – Filippo
私はあなたの質問を誤解したかもしれません。あなたはそれでより明確になることができますか?今のところ立っているので、私の答えに混乱しているのは、あなたのコメントに対する私の混乱です。 –
MVVMのシナリオで私は読書のための1つの編集のために、1つは作成のために、もう1つは特別なケースを作成するために、eccを持っています。これらのすべてのビューは、コンポーネントのほとんどの部分を軽微な違いで共有しています。共通部分はどこに置くことができますか?私はCRUD操作に適応する独自のxamlファイルを望んでいません。他のxamlファイルの共通コンポーネントを何らかの形で継承しているxamlファイルがもっと欲しいです。テンプレート化が正しい答えかもしれませんが、私はいくつかの例が必要です。 – Filippo