将Textblock文本绑定到2个不同的属性

时间:2011-03-23 15:05:07

标签: c# wpf data-binding treeview textblock

我有一个绑定的树视图,它显示了treeviewitem的一个属性(即displayname)(它们是对象的自定义视图模型)。

以下是相关的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)

我怎样才能做到这一点?使用多重绑定?

3 个答案:

答案 0 :(得分:7)

试试这个:

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

答案 1 :(得分: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>

或者您可以向视图模型添加一个属性,该属性在内部计算全名,然后绑定到该名称。

答案 2 :(得分:0)

或使用<Run/>

<TextBlock>
  <Run Text="{Binding OrganDisplayName}"/>
  <Run Text=" ("/>
  <Run Text="{Binding TypeName}"/>
  <Run Text=")"/>
</TextBlock>