トリガーされたセッターが有効になる前に、スタイルにデフォルトのセッターが必要な依存プロパティーがあるのはなぜですか?例えばDataTriggerが有効になる前に、スタイルで定義されているデフォルトを必要とするプロパティがあるのはなぜですか?
、
<ContentControl>
<ContentControl.Resources>
<DataTemplate x:Key="DefaultTemplate">
<TextBlock Text="Default Template" />
</DataTemplate>
<DataTemplate x:Key="MouseOverTemplate">
<TextBlock Text="MouseOver Template" />
</DataTemplate>
</ContentControl.Resources>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<!-- Triggered setter will work without this default setter -->
<!--<Setter Property="ContentTemplate"
Value="{StaticResource DefaultTemplate}" />-->
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="ContentTemplate"
Value="{StaticResource MouseOverTemplate}" />
</Trigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
私はどこかの良い説明を見ましたが、私はどこ覚えていないことができます。 the order that WPF applies dependency property valuesと何か関係がありますが、詳細を覚えていないか、トリガーが有効になる前にデフォルトで定義されているプロパティが必要な理由があります。
最初のスタイルは機能しません。シンプルな 'IsMouseOver'トリガーで試してみてください。 – Rachel
@Rachel - どのようにそのトリガーを定義していますか?これは、DataContextに当てはまる '{Binding IsMouseOver}'では動作しませんが、{Binding IsMouseOver、RelativeSource = {RelativeSource Self}} 'のように動作します。 – CodeNaked
コピー/貼り付け可能なコードで質問を更新しました – Rachel