2011-12-28 51 views
2

我有一個WPF用戶控件的標籤組WPF標籤內容:基於布爾依賴的價值屬性

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

在後面的代碼,我定義一個名爲Customer一個依賴屬性。客戶本身有一個名爲IsNew的房產。我想綁定lblTitle.Content,這樣當IsNew == true那麼它將是「創建新的」,並且當它是false時,那麼Content將被設置爲「更新」(我將通過設置lblTitle.Text = IsNew ? "Create New" : "Update";在ASP.net中執行此操作)。

這樣做的最好方法是什麼?

編輯

這是我在後面的代碼屬性的聲明:

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())); 

回答

-1

試試這個。

<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」。我已檢查並且客戶屬性在頁面上正確初始化,默認情況下IsNew = true。 – 2011-12-29 07:29:39

+0

他忘記在'

2

這會幫助你

<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}">

這樣,您就能夠爲您的Label控制基於Customer.IsNew財產新的內容價值和風格。