Blend がアイテムを DataTemplate スタイルの暗黙的にレンダリングしないという問題があります。
問題を再現するための基本的なプロジェクトをセットアップしました。以下は、イーグルの目を持つ人が私が間違っていることを確認するための Xaml + ResourceDictionary です (もしあれば)。本当に熱心な場合は、以下の Zipped プロジェクトへのリンクがあります。
これは、アプリケーションの実行時にレンダリングされるものです。
そしてこれがBlendが提示するものです:
<Color x:Key="TextColor1">#FF3631C4</Color>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="TextTrimming" Value="None"/>
<Setter Property="Foreground">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource TextColor1}"/>
</Setter.Value>
</Setter>
</Style>
<Canvas x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}">
<TextBlock Text="Textblock" Canvas.Left="44.954" Canvas.Top="49.305" />
<TextBlock Text="Textblock 2" Canvas.Left="44.954" Canvas.Top="86.284" />
<ListBox ItemsSource="{Binding Collection}" Canvas.Left="134.016" Canvas.Top="29.026" Height="154.275" Width="384.575">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Property1}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Canvas>
完全なサンプル プロジェクト (65kb) - WpfApplication2.zip
もちろん、この問題は明示的にスタイルを設定することで解決できますが、私の主なプロジェクトでは、これは少し頭痛の種になります。
その Blend に関する他の投稿でいくつかのコメントを見ましたが、問題があるかもしれませんが、具体的なものは何もありません。
ご意見/ご提案はありますか?
ありがとう!
編集:
スタイルに Explicit Key を指定すると、次のように Explicit に基づいて Implicit Style を作成できることがわかりました。
<Style x:Key="TextBlockStyle1" TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="TextTrimming" Value="None"/>
<Setter Property="Foreground">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource TextColor1}"/>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TextBlockStyle1}" />
これにより、別の Implicit Style を Resource として DataTemplate に追加できるようになります。
<DataTemplate>
<DataTemplate.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TextBlockStyle1}"></Style>
</DataTemplate.Resources>
<TextBlock Text="{Binding Property1}" />
</DataTemplate>
これにより、メインのプロジェクトで必要なブレンド可能性が得られますが、元の質問にはまだ完全には答えていません.