Используйте DataTemplate.Triggers в WP8

Я использую приложение ItemsControl в WP, чтобы показать список объектов (привязать наблюдаемую коллекцию к этому списку). В WPF мы можем обновлять пользовательский интерфейс, если обновляются какие-либо свойства объекта, но что касается WP8, как я могу сделать то же самое? Ниже приведен синтаксис, используемый в WPF, но в WP8 он показывает, что триггеры не найдены.

       <ItemsControl> 
            <ItemsControl.ItemTemplate> 
                <DataTemplate> 
                        <DataTemplate.Triggers> 

                </DataTemplate.Triggers> 
                </DataTemplate> 
            </ItemsControl.ItemTemplate> 
        </ItemsControl>

как я могу обновить UI в WP8? То, что я планирую сделать, основано на свойстве объекта, устанавливающем видимость кнопки в элементах.


person Sebastian    schedule 19.09.2013    source источник


Ответы (2)


Вместо использования триггера. Как насчет использования конвертера (реализация IValueConverter) для установки видимости на основе свойства. Итак, ваш xaml будет выглядеть так:

<button visibility="{binding YourObjectProperty, Converter={staticresource YourVisibilityConvert}}  ... />

Затем всякий раз, когда для свойства запускается событие propertychanged, пользовательский интерфейс обновляет видимость на основе значения, возвращаемого преобразователем.

person Saintchubs    schedule 19.09.2013
comment
Есть ли способ добавить триггеры к элементам WP8, загруженным из наблюдаемой коллекции? - person Sebastian; 19.09.2013
comment
Насколько я знаю, это не что-то доступное для Windows Phone, и конвертеры кажутся лучшим компромиссом. Вы можете найти довольно хороший конвертер видимости здесь: invokeit.wordpress.com/2013/08/04/ - person Saintchubs; 19.09.2013
comment
вы можете попробовать реализацию поведения Связанный вопрос прямо - person Eldho; 18.03.2015

вы можете попробовать установить поведение с помощью Expression blend

xmlns:ec="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" x:Class="XXX_XXXX"

<Image Source="/Assets/Images/Tick.png"
                   Stretch="None"
                   HorizontalAlignment="Stretch" 
                   VerticalAlignment="Top">
                <interactivity:Interaction.Triggers>
                    <ec:DataTrigger Binding="{Binding Change}" Value="False">
                        <ec:ChangePropertyAction PropertyName="Source">
                            <ec:ChangePropertyAction.Value>

                                <BitmapImage UriSource="/Assets/Images/Close.png"/>
                            </ec:ChangePropertyAction.Value>
                        </ec:ChangePropertyAction>
                    </ec:DataTrigger>
                </interactivity:Interaction.Triggers>
            </Image>

Msdn

person Eldho    schedule 18.03.2015