gpt4 book ai didi

c# - WPF 强制 xaml 重新获取属性的值,尽管属性的 setter 没有更改

转载 作者:行者123 更新时间:2023-12-02 02:38:09 29 4
gpt4 key购买 nike

我正在工作中修改现有的 WPF 项目(我没有太多 WPF 经验),并且我有以下属性:

public Point WidgetMiddlePoint
{
get
{
return new PointByAppMonitorDPI(_middlePoint);
//return _middlePoint;
}
}

在 UI 端:

<controls1:BorderWithTip.TipOffset>
<MultiBinding Converter="{StaticResource TipOffsetPositionConverter}">
<Binding Path="WidgetMiddlePoint" Delay="500" NotifyOnSourceUpdated="False" NotifyOnTargetUpdated="False"/>
<Binding ElementName="BorderWithTip" Path="ActualWidth" Delay="500" NotifyOnSourceUpdated="False" NotifyOnTargetUpdated="False"/>
</MultiBinding>
</controls1:BorderWithTip.TipOffset>

TipOffsetPositionConverter 根据给定的参数执行一些计算。
我的问题是 WidgetMiddlePoint 值取决于应用程序所在监视器的 DPI(DPI 与我的问题无关,它只是仅在调用 getter 时才考虑的因素的用例)。
因此,UI 会从 getter 获取值,并且不会刷新该值,除非我使用 setter 将其设置为其他值,然后“通知”。

如何将 UI 配置为每次都重新获取值,即使它“认为”属性的值没有更改?或者这是不好的做法并且不推荐?

最佳答案

如果您希望框架调用您的 getter,进而调用您的转换器,您应该实现 INotifyPropertyChanged并在 View 模型中引发 PropertyChanged 事件。

您需要以某种方式确定 DPI 何时发生变化,然后引发事件。仅当框架收到任何数据绑定(bind)属性(在本例中为 WidgetMiddlePointActualWidth)更改的通知时,才会调用 Convert 方法)。

关于c# - WPF 强制 xaml 重新获取属性的值,尽管属性的 setter 没有更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64026114/

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