从不同的控制触发WPF [英] WPF trigger from a different control

查看:154
本文介绍了从不同的控制触发WPF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图改变基于一个包含文本框的焦点属性包含边框背景色。 ?谁能解释什么是我的代码问题。



 < BORDER BorderBrush =LightBlue了borderThickness =2背景= #3300> 
< Border.Style>
<样式和GT;
< Style.Triggers>
< D​​ataTrigger
绑定={结合IsFocused,的ElementName = txtValue}
值=真>
< setter属性=Border.BackgroundVALUE =绿色/>
< / DataTrigger>
< /Style.Triggers>
< /样式和GT;
< /Border.Style>
<电网保证金=0VerticalAlignment =中心>
< Grid.ColumnDefinitions>
< ColumnDefinition />
< ColumnDefinition />
< /Grid.ColumnDefinitions>
<文本框名称=txtValueGrid.Column =0文本=20/>
< TextBlock的Grid.Column =1/>
< /网格和GT;
< /边框>


解决方案

您DataTrigger是不会改变的背景属性,因为你设置边框的声明中。因此,一旦设置好的,它永远不会改变。要允许改变,你必须设置样式里面的值

 <边境BorderBrush =LightBlue了borderThickness =2 > 
< Border.Style>
<风格的TargetType =边框>
< setter属性=背景VALUE =#3300/>
< Style.Triggers>
< D​​ataTrigger绑定={结合IsFocused,的ElementName = txtValue}VALUE =真>
< setter属性=背景值=绿色/>
< / DataTrigger>
< /Style.Triggers>
< /样式和GT;
< /Border.Style>
<电网保证金=0VerticalAlignment =中心>
< Grid.ColumnDefinitions>
< ColumnDefinition />
< ColumnDefinition />
< /Grid.ColumnDefinitions>
<文本框名称=txtValueGrid.Column =0文本=20/>
< TextBlock的Grid.Column =1/>
< /网格和GT;
< /边框>


I'm trying to change the containing border background color based on the focus property of a contained textbox. Can someone explain what's the problem with my code?

<Border BorderBrush="LightBlue" BorderThickness="2" Background="#33000000">
    <Border.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger
                  Binding="{Binding IsFocused, ElementName=txtValue}"
                  Value="True">
                    <Setter Property="Border.Background" Value="Green" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
    <Grid Margin="0" VerticalAlignment="Center">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBox Name="txtValue" Grid.Column="0" Text="20" />
        <TextBlock Grid.Column="1"  />
    </Grid>
</Border>

解决方案

Your DataTrigger is not change the value of the Background property because you set it inside the Border declaration. So, once setted, it will never changed. To allow changing, you have to set the value inside the Style.

 <Border BorderBrush="LightBlue" BorderThickness="2" >
    <Border.Style>            
        <Style TargetType="Border">
            <Setter Property="Background" Value="#33000000"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsFocused, ElementName=txtValue}" Value="True">
                    <Setter Property="Background" Value="Green" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
    <Grid Margin="0" VerticalAlignment="Center">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBox Name="txtValue" Grid.Column="0" Text="20" />
        <TextBlock Grid.Column="1"  />
    </Grid>
</Border>

这篇关于从不同的控制触发WPF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆