gpt4 book ai didi

c# - RaisePropertyChanged 什么时候执行?

转载 作者:行者123 更新时间:2023-11-30 20:22:45 31 4
gpt4 key购买 nike

我无法在 View Model 的 SET 属性中定位断​​点,因此默认值未更改。 (Get - 没问题,它用有效的默认值初始化我的文本框。)

我有一个model.cs定义公共(public)字符串字段的位置

model.cs
{
..
public textDefValue = "aaa";
}

这是一个 ViewModel

{
..
Model model = new Model();
....
public string TextField
{
get { return model.textDefValue; }
set
{
//break point here
model.textDefValue = value;
RaisePropertyChanged(TextField);
}
}
....
protected void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}

public event PropertyChangedEventHandler PropertyChanged;
}

和 XAML:

<TextBox x:Name="myBox" Text="{Binding ViewModel.TextField, Mode=TwoWay}">

我想当我在此文本框中键入内容时,SET 将起作用并且我将定位一个断点,但是,我无法在 SET 中击中此断点。错误在哪里?

最佳答案

没有错误,只是误会。

默认情况下,控件的 .Text 属性的绑定(bind)仅在您离开框时更新(即将焦点移动到不同的控件)。您需要单击或 Tab 键才能更新值和命中断点。

您可以通过如下更新绑定(bind)来更改此行为:

Text="{Binding ViewModel.TextField, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

这将导致绑定(bind)在每次文本值更改时更新 - 即,在您的文本框中每次按键。

关于c# - RaisePropertyChanged 什么时候执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30575744/

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