トリガーで矩形(WPF)の色を設定しようとしています(矩形のTagプロパティにバインドしているboolean DependencyPropertyによって異なります)。私は長方形のタグプロパティに "true" または "false"、トリガーが正しく動作ハードコードした場合プロパティを依存プロパティにバインドするときにトリガーが機能しない
<Window.Resources>
<Style x:Key="TriggerDark" TargetType="Rectangle">
<Setter Property="Fill" Value="Green" />
<Style.Triggers>
<Trigger Property="Tag" Value="False">
<Setter Property="Fill" Value="Red" />
</Trigger>
<Trigger Property="Tag" Value="True">
<Setter Property="Fill" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Rectangle Style="{StaticResource ResourceKey=TriggerDark}" Tag="{Binding Path=isAutoStart, UpdateSourceTrigger=PropertyChanged}">
:
public partial class MainWindow : Window
{
public Boolean isAutoStart
{
get { return (Boolean)GetValue(isAutoStartProperty); }
set { SetValue(isAutoStartProperty, value); }
}
public static readonly DependencyProperty isAutoStartProperty =
DependencyProperty.Register("isAutoStart", typeof(Boolean),
typeof(MainWindow), new PropertyMetadata(true));
private void Window_Loaded(object sender, RoutedEventArgs e)
{
isAutoStart = false;
}
}
とXAMLで:
私は、次のコードを持っています。 実行時にタグプロパティの値を実行時にコンソールに出力すると、バインディングは機能しますが、トリガは起動しません。
私が間違っていることは何ですか?
ありがとうございます!
:
としてあなたは、このようにXAMLでそれを使用しますWindowのDataContextをそれ自身に設定するか、BindingのRelativeSourceプロパティを指定します。それ以外に、UpdateSourceTriggerの設定は意味がありません。なぜなら、ここで効果がないからです。 – Clemens
また、Tagプロパティをバインドせず、ValueにTriggerを設定するのではなく、isAutoStartプロパティに直接バインドするDataTriggerを使用することもできます。 – Clemens
DataContextを設定しなかった場合は、 'Tag =" {Binding isAutoStart、RelativeSource = {RelativeSource AncestorType = Window}} "を試してください。 – Clemens