Текст привязки данных WPF StringFormat не отображается - PullRequest
0 голосов
/ 21 сентября 2010

Я пытаюсь получить текст заголовка TreeviewItem для установки в привязке к источнику XML.Все работает нормально, кроме единственного, что появляется в заголовке, это текст, к которому я привязываюсь, и ничего больше в формате строки.Пример:

<HierarchicalDataTemplate x:Key="LogDataTemp" ItemsSource="{Binding Path=log}">
    <TreeViewItem>
        <TreeViewItem.Header>
            <Binding Path="Attribute[level].Value" StringFormat="TEST \{0\}" />
        </TreeViewItem.Header>
    </TreeViewItem>
</HierarchicalDataTemplate>

В этом случае отображается значение уровня, но больше ничего.Я пробовал десятки разных способов подойти к этому, и кажется, что ничего не работает.

1 Ответ

1 голос
/ 21 сентября 2010

Не избегайте скобок в StringFormat.Вы хотите применить форматирование к 0-му элементу в вашей привязке.

Например, с помощью простого свойства, называемого «Уровень»:

        <TextBlock x:Name="txtUnformatted" Grid.Row="0" Foreground="White" >
            <TextBlock.Text>
                <Binding Path="Level" />
            </TextBlock.Text>
        </TextBlock>

        <TextBlock x:Name="txtFormatted" Grid.Row="1" Foreground="White">
            <TextBlock.Text>
                <Binding Path="Level" StringFormat="Test {0:000000}" />
            </TextBlock.Text>
        </TextBlock>

И результат будет примерно таким:alt text

Обновление

Кроме того, реализация заголовка по умолчанию, когда вы не добавляете никаких элементов управления, - это простой ContentPresenter, который не применяет форматирование.Чтобы обойти это, просто поместите TextBlock в заголовок и привяжите к нему текст, который вы хотите отформатировать.

<HierarchicalDataTemplate x:Key="LogDataTemp" ItemsSource="{Binding Path=log}">
    <TreeViewItem>
        <TreeViewItem.Header>
            <TextBlock>
                <TextBlock.Text>
                     <Binding Path="Attribute[level].Value" 
                              StringFormat="TEST {0}" />
                </TextBlock.Text>
            </TextBlock>
        </TreeViewItem.Header>
    </TreeViewItem>
</HierarchicalDataTemplate>

Вполне приемлемо (и это обычно делается) помещать элементы управления в элемент управления заголовка (длянапример, сетка, содержащая изображение и метку).Прелесть WPF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...