多くの「より良い」質問と同様です。私は文脈に「依存する」と言います。
両方とも異なるコンテキストで目的を果たすことができるため、両方とも存在します。上に示したものだけが与えられた場合、私は例2を選択します。
しかし、DataContextを設定すると、すべての子がそのDataContextを継承します。だから代わりにボタンを使用しています。そして、あなたのボタンの中で少しジャズして、それぞれ異なる色で4回テキストを表示したいのです。 (DataContextのがボタンの上にあることに注意して、彼らは実施例2で行うようにテキストブロックは、ソースを必要としないが)
<Button DataContext="{StaticResource MyValue}" Height="Auto" Width="Auto" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding}" Foreground="Red" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding}" Foreground="Blue" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding}" Foreground="Yellow"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding}" Foreground="Green" />
</Grid>
</Button>
:あなたは以下を参照することができますように、私はその後、1
例1例を選ぶだろう
例2:あなただけの場合はInt16型のような1つの表現を持つ単純なオブジェクトに結合しているとき
<Button Height="Auto" Width="Auto" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding, Source={StaticResource MyValue}}" Foreground="Red" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding, Source={StaticResource MyValue}}" Foreground="Blue" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding, Source={StaticResource MyValue}}" Foreground="Yellow"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding, Source={StaticResource MyValue}}" Foreground="Green" />
</Grid>
</Button>
、あなたはおそらく一度だけ、その値を結合して表示するために行くので、オプションです2が最も理にかなっています。
「ソース」を複数のバインディングに同じものに設定している場合は、共通の親FrameworkElementのDataContextをバインドするだけです。
私はちょっと質問をするための単純な例を考え出していました。私は実際には、このような(1つの値で)データバインドされたことはありませんが、私はDataContextとSourceの間に良いアプローチがあるかどうかを調べていました。あなたの貢献に感謝します。 –