简体   繁体   中英

Datatrigger in WPF

I am new to WPF, and learning the basics of WPF. What I want is when a CheckBox is checked then make the background of a Button green.

The following is to code I have written:

<Window x:Class="MyApplication.DataTrigger2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DataTrigger2" Height="300" Width="300" Loaded="Window_Loaded">
    <Window.Resources>
        <Style x:Key="styleDataButton" TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding chk}" Value="checked">
                    <Setter Property="Background" Value="Gold"/>
                </DataTrigger>
            </Style.Triggers>

        </Style>
    </Window.Resources>
    <Grid>
        <Button x:Name="btn" Height="50" Width="100" Content="Button" Margin="89,33,89,178" Style="{StaticResource styleDataButton}"/>
        <CheckBox x:Name="chk" Content="Checkbox" Height="50" Width="100" Margin="89,106,89,105"></CheckBox>
    </Grid>
</Window>

You need to bind to CheckBox element. Binding="{Binding chk}" means that you are binding to "chk" property of the DataContext. You should change it to:

<DataTrigger Binding="{Binding ElementName=chk, Path=IsChecked}" Value="True">
     <Setter Property="Background" Value="Gold"/>
</DataTrigger>

That way, you are binding to IsChecked property of your CheckBox and checking if value is true.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM