如何以编程方式更改绑定的ElementName

时间:2019-07-06 00:18:41

标签: wpf data-binding

我试图通过以编程方式更改将两个对象绑定在一起的ElementName来避免代码重复。

在我的应用程序中,我想为用户填充一些文本框。作为给文本框提供帮助文本的一种方式,我在文本框顶部制作了一个标签,该标签的大小相同,用于显示帮助文本。一旦选择了文本框或文本框上有一些文本,标签就变得不可见。

这是样式代码:

<Style x:Key="LabelHelper" TargetType="{x:Type Label}">
    <Setter Property="Visibility" Value="Hidden"/>
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding ="{Binding ElementName=TextBox1, Path=Text.Length}" Value="0"/>
                <Condition Binding ="{Binding ElementName=TextBox1, Path=IsFocused}" Value="False"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="Visibility" Value="Visible"/>
        </MultiDataTrigger>
    </Style.Triggers>
</Style>

这是标签和文本框的代码:

<Label HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Height="40" VerticalAlignment="Top" Width="239" FontStyle="Italic"  Foreground="BurlyWood" Style="{StaticResource LabelHelper}">
    Helper Text
</Label>
<TextBox  Name="TextBox1" Background="Transparent" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Height="40" Text="{Binding InputText,Mode=TwoWay}" VerticalAlignment="Top" Width="239" />

由于我的程序有很多TextBoxes,所以我想避免只复制ElementName粘贴相同的样式。理想情况下,我想将某种属性添加到“标签”,在这里我可以将其简单地设置为“ TextBox1”或任何其他想要绑定到其上的TextBox。我该怎么办?

0 个答案:

没有答案
相关问题