WPF布尔触发器

时间:2012-06-19 13:38:06

标签: c# .net wpf xaml triggers

我的WPF应用程序的Window类中有一个布尔值。如何根据此布尔值是true还是false来定位触发器?

<Grid>
  <Grid.Triggers>
    <Trigger ... />
  </Grid.Triggers>
</Grid>

感谢。

2 个答案:

答案 0 :(得分:11)

<。>在* .cs文件中:

public partial class MainWindow : INotifyPropertyChanged
{
    public MainWindow()
    {
        DataContext = this;
        InitializeComponent();
    }

    public event PropertyChangedEventHandler PropertyChanged = delegate { };

    public bool Flag { get; set; }

    private void ButtonClick(object sender, RoutedEventArgs e)
    {
        Flag = true;
        OnPropertyChanged("Flag");
    }

    protected void OnPropertyChanged(string property)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(property));
    }
}

以xaml形式:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"
        Width="525"
        Height="350">

    <Window.Resources>
        <Style TargetType="Grid">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Flag}" Value="True">
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="30" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Button Click="ButtonClick" Content="Click Me" />
    </Grid>
</Window>

答案 1 :(得分:3)

您可以使用DataTrigger。我认为您需要在样式或模板中使用它。

或者,您可以捕获后面代码中的更改。