Как реализовать обновление элемента
От: Аноним  
Дата: 29.07.11 11:56
Оценка:
Есть класс:

    class User
    {
        public Victim(string _name)
        {
            Name = _name;
        }

        public string Name
        {
            get;
            private set;
        }

        public StatusVictim Status
        {
            get;
            set;
        }
    }

    enum StatusVictim
    {
        Offline,
        Online,
        Away,
        Unavailable
    }

Хочу в зависимости от статуса изменять цвет элемента в списке. Стиль элемента, цвет которого нужно изменить, описываю следующим образом:

<Style>
    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=Status}" Value="Offline">
            <Setter ...../>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=Status}" Value="Online">
            <Setter ...../>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=Status}" Value="Away">
            <Setter ...../>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=Status}" Value="Unavailable">
            <Setter ...../>
        </DataTrigger>
    </Style.Triggers>
</Style>


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

Пошел по другому пути: Создал класс ConvertStatusToColor унаследованный от IValueConverter. И прописал в свойстве элемента следующее:

Fill="{Binding Path=Status, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource convert}}"


Тоже самое... при добавление элементов все цвета корректны, но последующее изменение свойства Status не вызывает ни каких действий изменения цвета.

Подскажите пожалуйста, как мне нужно реализовать возможность отображения статуса пользователя при его изменении?
Re: Как реализовать обновление элемента
От: Аноним  
Дата: 29.07.11 11:58
Оценка:
INotifyPropertyChanged
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.