我的目标是让一个 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 对象,但充其量是一个双精度对象,最坏情况是一个字符串。我有一个转换器可以将字符串转换为双精度,但这似乎不是诀窍。我的感觉是多重绑定产生了我的解决方案,但是,我看到的所有示例都是将两个字符串组合到第三个控件中。我对制作带有附加值的控件不感兴趣,而是更新我的“复杂”属性的组件。
我知道我可以创建两个“子”属性,一个高度和宽度,然后一次更新一个维度属性,但似乎应该存在一个更优雅的解决方案。
为什么我的文本框没有正确绑定到 Dimension 属性的单个组件并相应地更新维度?
构造一个实现 INotifyPropertyChanged 的包装类似乎有些过分。
public class MySizeClass : Size, INotifyPropertyChanged