我在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()));
答案 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/