Привязка данных к XML в DataTrigger в WPF - PullRequest
1 голос
/ 13 февраля 2010

В приложении WPF я правильно связал шаблон данных с узлом XML, который выглядит следующим образом:

<answer answer="Tree", correct="false" score="10" />

В моем приложении у меня есть TextBlock с ответом. Сначала я хочу, чтобы он был невидимым, но когда правильный атрибут в файле XML изменится на «true», он должен стать видимым.

Мой DataTemplate подключен правильно, потому что все остальное работает. Например, если я изменю атрибут ответа в файле XML (только для тестирования), он изменится в моем представлении WPF. Но у меня проблемы с видимостью. Это мой XAML:

<TextBlock Text="{Binding XPath=@answer}" Visibility="Hidden">
    <TextBlock.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding XPath=@correct}" Value="true">
                    <Setter Property="TextBlock.Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

Я предполагаю, что привязка данных в DataTrigger работает неправильно. У кого-нибудь есть подсказка?

Ответы [ 3 ]

2 голосов
/ 13 февраля 2010

Я столкнулся с той же проблемой с ToggleButtons с привязкой к данным. Попробуйте удалить Visibility = "False" и заменить его другим DataTrigger, который обрабатывает неправильный регистр.

1 голос
/ 07 июня 2011

Конечно, это работает, если вы указываете конкретный случай, а не просто ложь. Как и в моем случае, это было {x: Null} и значение. Поэтому, когда присутствует его значение для привязки, оно будет истинным, и TextBlock.Visibilty будет установлен с использованием значения setters, и когда путь привязки не имеет никакого значения внутри него, т. Е. Null в моем случае, это просто {x: Null} :)

1 голос
/ 13 февраля 2010

Я думаю, проблема в том, что свойство Visibility жестко запрограммировано. Попробуйте установить видимость в стиле:

<TextBlock Text="{Binding XPath=@answer}"> 
    <TextBlock.Style> 
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="Visibility" Value="Hidden"/>
            <Style.Triggers> 
                <DataTrigger Binding="{Binding XPath=@correct}" Value="true"> 
                    <Setter Property="TextBlock.Visibility" Value="Visible" /> 
                </DataTrigger> 
            </Style.Triggers> 
        </Style> 
    </TextBlock.Style> 
</TextBlock> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...