Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 何时执行RaisePropertyChanged?_C#_Wpf - Fatal编程技术网

C# 何时执行RaisePropertyChanged?

C# 何时执行RaisePropertyChanged?,c#,wpf,C#,Wpf,我无法在视图模型的SET属性中设置断点,因此默认值未更改。(Get-正常,它使用有效的默认值初始化我的文本框。) 我有一个模型 其中定义了公共字符串字段 model.cs { .. public textDefValue = "aaa"; } 这是一个视图模型 { .. Model model = new Model(); .... public string TextField { get { return model.textDefValue;

我无法在视图模型的SET属性中设置断点,因此默认值未更改。(Get-正常,它使用有效的默认值初始化我的文本框。)

我有一个模型 其中定义了公共字符串字段

model.cs
{
..
public textDefValue = "aaa";
}
这是一个视图模型

{
.. 
 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}">


我想,当我在这个文本框中键入一些东西时,集合将起作用,我将以一个断点为目标,但是,我无法命中集合中的这个断点。臭虫在哪里

没有bug,只是一个误会

默认情况下,控件的
.Text
属性的绑定仅在您离开该框时更新(即,将焦点移动到其他控件)。您需要单击或制表符以更新值并点击断点

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

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

这将导致绑定在每次文本值更改时都会更新,即在文本框中按每个键进行更新。

ViewModel在哪里定义,大部分情况下,它将遍历一个资源,该资源将被称为
text=“{binding TextField,Mode=TwoWay,Source={StaticResource KeyOfViewModelInResources}”
很难翻译所有这些内容,但问题可能与您的
绑定有关。检查输出窗口以获取线索。此外,您不需要在视图模型中创建属性来公开模型的属性。您可以只绑定到模型的属性。很抱歉,这里还有一个问题-我好像撞坏了什么东西((.不,Get也不起作用-我添加了您建议的字符串,但是..我在ViewModel的构造函数中初始化了模型实例,但是在XAML中,我有不同的datacontext,然后是ViewModel-这是另一个class@curiousity这是一个完全不相关的问题,您需要使用相关代码提出一个新问题来重新创建is控告