2009-02-11 59 views
3

我有一個帶有三個字段中顯示對象一個DataTemplate,如:在標籤上設置觸發器的XAML語法是什麼?

Name = "Font Color" 
Value = "Orange" 
Editable = "True" 

,但我想顯示他們作爲例如:

字體顏色:橙色可編輯

但我很難找到在這裏使用觸發器的語法,例如當字段Editable =「True」時顯示「可編輯」

有沒有人知道這樣做的語法?

在下面的代碼會導致「綁定不能在物業使用」:

<DataTemplate x:Key="settingsItemTemplate"> 
    <StackPanel Orientation="Horizontal"> 
     <Label Content="{Binding XPath=Name}" ContentStringFormat=" {0}:"/> 
     <Label Content="{Binding XPath=Value}"/> 
     <Label> 
      <Label.Triggers> 
       <Trigger Property="{Binding XPath=Editable}" Value="True"> 
        <Setter Property="Content" Value="Editable"/> 
       </Trigger> 
       <Trigger Property="{Binding XPath=Editable}" Value="False"> 
        <Setter Property="Content" Value="NOT Editable"/> 
       </Trigger> 
      </Label.Triggers> 
     </Label> 
    </StackPanel> 
</DataTemplate> 
+0

我用另一個解決方案更新了我的答案 - 這是否適合您? – Andy 2009-02-11 14:21:16

回答

10

將它的工作使用TextBlock,而不是一個LabelTextBlock確實有一個Text屬性,您應該能夠綁定到這種情況。

如果您確實想要使用Label,則另一種方法是創建兩個DataTemplate - 一個用於可編輯的情況,另一個用於不可編輯的情況。然後,您可以將ContentTemplate屬性綁定到適當的模板。

更新:尋找到它多一些之後,它看起來像Trigger不支持其Property屬性綁定。然而,DataTrigger不支持此:

<StackPanel> 
    <CheckBox Name="EditableCheckBox">Is Editable</CheckBox> 
    <Label> 
     <Label.Resources> 
      <Style TargetType="{x:Type Label}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=EditableCheckBox, Path=IsChecked}" Value="True"> 
         <Setter Property="Content" Value="Editable" /> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding ElementName=EditableCheckBox, Path=IsChecked}" Value="False"> 
         <Setter Property="Content" Value="NOT Editable" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Label.Resources> 
    </Label> 
</StackPanel> 

你應該能夠修改Binding屬性綁定到XML數據源,而不是做其他控件的值。

+0

我嘗試過,但仍然得到錯誤,我無法在屬性中進行綁定。我沒有看到如何在觸發器中告訴它:查看當前對象中「可編輯」屬性的值,看它是否爲「真」,在此語法叢林中丟失。 – 2009-02-11 12:50:39

相關問題