Nano Hash - криптовалюты, майнинг, программирование

Текст привязки данных WPF StringFormat не отображается

Я пытаюсь установить текст заголовка 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>

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

21.09.2010

Ответы:


1

Не избегайте фигурных скобок в 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.

21.09.2010
  • Моя первоначальная мысль тоже, но она не объясняет, почему появляется связанное значение, а не строковый литерал TEST {0}... 21.09.2010
  • Я пробовал и без побега. Появляется только связанное значение. Я только что попытался изменить его на предложенный вами формат {0:000000}, и все равно появляется только связанное значение, а не Test . 21.09.2010
  • Мне интересно, имеет ли это какое-то отношение к тому, что это заголовок, а не текстовый блок в случае того, что вы опубликовали. 21.09.2010
  • Хорошо, подтвердил, что я добавил текстовый блок внутри TreeviewItem и использовал тот же формат строки, и тест там выглядит нормально. Любые идеи? 21.09.2010
  • Это связано с тем, что внутреннее представление заголовка, когда вы не используете элемент управления, представляет собой простой ContentPresenter, который не применяет никакого форматирования. Если вы просто поместите TextBlock внутри заголовка, он будет использовать его для отображения содержимого, и, как вы видели, вы можете отформатировать его. Конечно, нет ничего плохого в том, чтобы поместить элемент управления в заголовок, и это обычная практика (например, помещать сетку, содержащую значок и текстовый блок). Я обновлю свой ответ, чтобы отразить это. 21.09.2010
  • Вау, не подумал об этом! Только что попробовал, работает, спасибо за помощь! 21.09.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..