2011-03-23 85 views
1

我有一個綁定的樹視圖,顯示treeviewitem(它們是對象的自定義視圖模型)的屬性(即顯示名稱)之一。將文本塊文本綁定到2個不同的屬性

下面是相關的XAML:

<local:ExtendedTreeView.ItemTemplate> 
        <HierarchicalDataTemplate ItemsSource="{Binding SubOrganLocations}"> 
         <TextBlock Text="{Binding OrganDisplayName}" > 
         </TextBlock> 
        </HierarchicalDataTemplate> 
       </local:ExtendedTreeView.ItemTemplate> 

我要的是能夠顯示旁邊括號中的顯示名稱另一個屬性。

所以不是樹形視圖看起來像這樣:我希望它看起來像這樣

Root 
-sub node1 
--subsub node1 
-sub node2 

Root (Type1) 
    -sub node1 (Type2) 
    --subsub node1 (Type 3) 
    -sub node2 (Type 1) 

我怎樣才能做到這一點?使用多重綁定?

回答

7

試試這個:

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0} ({1})"> 
      <Binding Path="{YourBindingHere}" /> 
      <Binding Path="{YourBindingHere}" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 
+0

我沒有意識到這一點,因爲我已經沒有做什麼WPF,更多Silverlight,它是唯一可用的第三方在silverlight控制。這是一個比我的更好的解決方案(只要它工作,我不能證明或反駁) – BenCr 2011-03-23 15:15:27

+0

我可以保證它的工作原理,我在幾個地方使用它,我正在開發一個非常大的WPF應用程序。 – CodingGorilla 2011-03-23 15:16:36

+0

是的,我相信你,我只是想在評論中掩飾一下我的屁股。說這是一個比我的更好的解決方案是相當明確的考慮到我沒有真正嘗試過。我只是不希望OP能夠回來說「BenCr,你說這更好,而不是」。對不起,任何冒犯。 – BenCr 2011-03-23 15:20:38

1

你可以只使用多個文本塊

<local:ExtendedTreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding SubOrganLocations}"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition /> 
       <ColumnDefinition /> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="{Binding OrganDisplayName}" /> 
      <TextBlock Grid.Column="1" Text="{Binding TypeName}" /> 
     </Grid> 
    </HierarchicalDataTemplate> 
</local:ExtendedTreeView.ItemTemplate> 

或者你可以將屬性添加到其內部計算的全名,只是綁定到您的視圖模型。

0

或者使用<Run/>

<TextBlock> 
    <Run Text="{Binding OrganDisplayName}"/> 
    <Run Text=" ("/> 
    <Run Text="{Binding TypeName}"/> 
    <Run Text=")"/> 
</TextBlock> 
相關問題