Моя цель состоит в том, чтобы одно свойство Size обновлялось двумя разными текстовыми полями. В частности, каждый компонент подключен к одному текстовому полю, которое выделено в XAML ниже. В частности, строка, в которой говорится: {Binding Path = Dimensions.Width, ....}
private Size _dimension;
public Size Dimensions
{
get { return _dimension; }
set
{
_dimension = value;
OnPropertyChanged("Dimensions");
}
}
Мой XAML выглядит следующим образом:
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
<Label Content="Width" />
<TextBox Width="50" Text="{Binding Path=Dimensions.Width,
Converter={StaticResource myStringToDoubleConverter},
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
<Label Content="Height" />
<TextBox Width="50" Text="{Binding Path=Dimensions.Height,
Converter={StaticResource myStringToDoubleConverter},
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</StackPanel>
У меня проблема в том, что функция set не вызывается, когда я изменяю текст в текстовом поле. Я предполагаю, что причина в том, что я предоставляю не объект Size, а в лучшем случае двойное значение, а в худшем - строку. У меня есть преобразователь для преобразования строки в двойную, но это не похоже на трюк. Я чувствую, что Multibinding дает мое решение, однако все примеры, которые я видел, объединяют две строки в третий элемент управления. Меня не интересует создание элемента управления с добавленными значениями, а скорее обновление компонентов моего «сложного» свойства.
Я понимаю, что могу создать два «вспомогательных» свойства, «Высоту» и «Ширина», а затем обновлять свойство «Размер» по частям, но кажется, что должно существовать более элегантное решение.
Почему мое текстовое поле не привязано должным образом к одному компоненту свойства Dimension и соответствующим образом не обновляет измерение?
Создание класса-оболочки, реализующего INotifyPropertyChanged, кажется излишним.
public class MySizeClass : Size, INotifyPropertyChanged