根据bool依赖属性的值设置WPF标签内容

时间:2011-12-28 10:59:34

标签: wpf data-binding dependency-properties

我在WPF用户控件中有一个标签:

<Label Name="lblTitle"></Label>

在后面的代码中,我定义了一个名为Customer的依赖项属性。客户本身有一个名为IsNew的属性。我想绑定lblTitle.Content,以便在IsNew == true时它将是“新建”,当它是false时,Content将被设置为“更新” (我会在ASP.net中设置lblTitle.Text = IsNew ? "Create New" : "Update";)。

这样做的最佳方式是什么?

修改

这是我在后面的代码中声明的属性:

public Cust Customer{
    get { return (Cust)GetValue(CustomerProperty); }
    set { SetValue(CustomerProperty, value); }
}

public static readonly DependencyProperty CustomerProperty =
    DependencyProperty.Register("Customer", typeof(Cust), typeof(Name_Of_Control), new UIPropertyMetadata(new Cust()));

3 个答案:

答案 0 :(得分:3)

这应该可以帮到你

<Label Name="lblTitle">
    <Label.Style>    
        <Style TargetType="{x:Type Label}">
            <Setter Property="Label.Content" Value="Update" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Customer.IsNew}" Value="True">
                    <Setter Property="Label.Content" Value="Create New" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    <Label.Style>
</Label>

此外,如果您要应用资源中的样式,可以使用BasedOn属性:

<Style BasedOn="{StaticResource MyLabelStyleName}" TargetType="{x:Type Label}">

通过它,您可以根据Customer.IsNew属性以及Label控件的样式设置新的内容值。

答案 1 :(得分:0)

试试这个。

<Label Name="lblTitle">
    <Label.Style TargetType="Label">
        <Setter Property="Content" Value="Update" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding Customer.IsNew}" Value="True">
                <Setter Property="Content" Value="Create New" />
            </DataTrigger>
        </Style.Triggers>
    </Label.Style>
</Label>

答案 2 :(得分:-3)

另一件值得注意的事情是,如果您的标签只是显示文字,那么您最好使用TextBlock而不是标签:

http://joshsmithonwpf.wordpress.com/2007/07/04/differences-between-label-and-textblock/