gpt4 book ai didi

wpf - 数学运算符可以应用于绑定(bind)路径吗?

转载 作者:行者123 更新时间:2023-12-03 03:22:44 27 4
gpt4 key购买 nike

我可以得到以下值(ActualWidth 除以 2)吗?

<StackPanel Name="SP2" Width="{Binding ElementName=SP1, Path=ActualWidth/2}">

似乎不适合我。

谢谢。

最佳答案

您可以使用自定义转换器直接在 XAML 中执行简单的计算。

例如,看看这个实现:

MathConverter

简单用法:

<RotateTransform Angle="{Binding Text, ElementName=Seconds,
Converter={ikriv:MathConverter}, ConverterParameter=x*6}" />
<小时/>

经典方法是创建只读计算属性。因此,在这个简单的情况下,您可以添加第二个属性 HalfWidth

public double HalfWidth
{
get
{
return ActualWidth / 2.0;
}
}

坏消息是,当更新ActualWidth时,绑定(bind)到HalfWidth的 View 上的StackPanel将不会更新。这是因为 View 不知道 HalfWidth 已更改。

通过在 ActualWidth 的 setter 中引发 HalfWidth 的属性更改事件, View 将查询 HalfWidth 并因此检索正确的值。

private double _actualWidth;
public double ActualWidth
{
get
{
return _actualWidth;
}
set
{
if (_actualWidth != value)
{
_actualWidth = value;
OnPropertyChanged("ActualWidth");
OnPropertyChanged("HalfWidth");
}
}
}

这种方法的主要问题是,当我们有大量没有 setter 的计算属性时,它很快就会成为一场噩梦。

这就是为什么(在 MVVM 模式中)我个人更喜欢使用自定义转换器。

关于wpf - 数学运算符可以应用于绑定(bind)路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11256608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com