根据布尔型依赖属性的值设置WPF标签内容。

3

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

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

在代码背后,我定义了一个称为Customer的依赖属性。Customer本身有一个名为IsNew的属性。我想要绑定lblTitle.Content,这样当IsNew == true时,它将是"Create New",而当它是false时,Content将被设置为"Update"(在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个回答

4
这应该对你有所帮助
<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控件设置样式。

第二个 <Label.Style> 缺少 /。 - Hypenate

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
当我这样做时,标签的内容仍然设置为“System.Windows.Style”。我已经检查过页面上的Customer属性,并且默认情况下IsNew=true已正确初始化。 - Yaakov Ellis
他只是忘记在 <Label> 标签之后加上 <Label.Style>,代码本身看起来不错。 - KennyPowers

-3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接