Привязать текст Textblock к 2 различным свойствам - PullRequest
1 голос
/ 23 марта 2011

У меня есть связанное древовидное представление, которое отображает одно из свойств (а именно отображаемое имя) элемента дерева (которые являются пользовательскими моделями представления объекта).

Вот соответствующий 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 ]

7 голосов
/ 23 марта 2011

Попробуйте это:

<TextBlock>
   <TextBlock.Text>
      <MultiBinding StringFormat="{}{0} ({1})">
          <Binding Path="{YourBindingHere}" />
          <Binding Path="{YourBindingHere}" />
      </MultiBinding>
   </TextBlock.Text>
</TextBlock>
1 голос
/ 23 марта 2011

Вы можете просто использовать несколько текстовых блоков

<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 голосов
/ 23 марта 2011

Или используйте <Run/>:

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