【发布时间】:2020-03-15 22:13:52
【问题描述】:
所以情况如下: 我有一个标签(它的自定义控件衍生物,如果重要的话),我需要使用 MVVM 获取它的宽度和高度。但是,如果我将任一参数设置为 {Binding XXX},它们就不再是 Auto,因此当我在运行时更改字体时,它们的大小不会更新。
我阅读了有关使用 ActualWidth/Height 的信息,这听起来正是我所需要的,除了它不是依赖参数这一事实,因此我似乎需要为此打破 MVVM。
有没有更好的解决方案?
编辑
嗯,XAML 中的元素看起来没什么特别的。只有一百万个绑定。
<local:DraggableLabel
Content="123"
Margin="{Binding Label2Position, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
HorizontalAlignment="Left"
VerticalAlignment="Top"
FontFamily="{Binding Label2Font.Family}"
FontSize="{Binding Label2Font.Size}"
FontWeight="{Binding Label2Font.Weight}"
FontStyle="{Binding Label2Font.Style}"
Foreground="{Binding Path=Label2Color,
UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource ColorToBrushConverter}
}"/>
默认是,
Width="Auto"
不必写得很明确,但可以(什么都不做)。它会在字体更改时调整大小。如果我将其设置为
Width="Binding {Label1Width}"
绑定工作正常,但我不再获得自动调整。
【问题讨论】:
-
你能出示你的代码吗?
-
已添加。不过,没有任何启示。我也可以发布自定义控件代码,但它根本不会弄乱这个,因为它派生自 Label 应该表现相同。
-
Label宽度是否也设置为Auto? -
宽度和高度都通过属性面板设置为自动,它不在 XAML 中表示,但我测试并在 XAML 中将它们设置为自动执行相同的操作。
-
由于
ActualWidhth属性是绑定源,它不必是DependencyProperty。你应该使用这个。Label1Width也是double类型的自定义DependencyProperty?