Могу ли я ловить обновления для членов наблюдаемой структуры в WPF? - PullRequest
5 голосов
/ 29 мая 2011

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

Есть ли способ отследить обновления членов структуры, чтобы мое представление отражало обновление?

Часть структуры:

public struct ConfigStaticData
{
    public string Callsign;
}

My: переменная:

private ConfigStaticData _ConfigStaticDataDetails;
public ConfigStaticData ConfigStaticDataDetails
{
    get
    {
        return _ConfigStaticDataDetails;
    }
    set
    {
        _ConfigStaticDataDetails = value;
        OnPropertyChanged("ConfigStaticDataDetails");
    }
}

А в XAML:

<TextBox Name="ConfigStaticDataCallsignLabelTxt"
         Margin="0,2,0,2"
         Width="230"
         Style="{DynamicResource EditableTextBox}"
         Text="{Binding Source=ConfigStaticDataDetails, Path=Callsign}" />

Я пробовал разные способы, но это мой текущий код (который не работает).

Ответы [ 3 ]

3 голосов
/ 29 мая 2011

Я думаю, вам следует заменить эту структуру собственным классом, используя только структуру для переносимости.Структуры должны быть неизменными;как таковой, редко бывает что-либо интересное для наблюдения.А из-за семантики значений каждый наблюдатель может видеть разные значения (или, может быть, в штучной упаковке).Структуры и события плохо сочетаются ...

0 голосов
/ 31 мая 2011

Спасибо за ваш вклад. Я думаю, что моим решением будет изменить дизайн интерфейса COM и использовать классы, реализующие интерфейс INotifyPropertyChanged вместо структур. Кажется, это работает как ожидалось.

0 голосов
/ 29 мая 2011

Я думаю, вам следует написать код в Binding Converter, чтобы упростить уведомление. чтобы сделать его более переносимым, вы можете заключить логику «уведомлять» в метод расширения, связанный с вашей структурой

...