C# INotifyPropertyChanged后更新控件
我已经检查了堆栈上的现有答案,但仍然无法获得正确答案: 我认为:C# INotifyPropertyChanged后更新控件,c#,wpf,mvvm,inotifypropertychanged,C#,Wpf,Mvvm,Inotifypropertychanged,我已经检查了堆栈上的现有答案,但仍然无法获得正确答案: 我认为: <TextBlock Margin="8,0,0,0" FontSize="48" Text="{Binding YearsToSave}" d:LayoutOverrides="Width"> ... <SurfaceControls:SurfaceSlider
<TextBlock Margin="8,0,0,0"
FontSize="48"
Text="{Binding YearsToSave}"
d:LayoutOverrides="Width">
...
<SurfaceControls:SurfaceSlider x:Name="slider" Grid.Row="8"
Grid.Column="2"
VerticalAlignment="Bottom"
Maximum="{Binding YearsToSaveMaxValue}"
Minimum="{Binding YearsToSaveMinValue}"
Value="{Binding YearsToSave}"
d:LayoutOverrides="Width" />
属性更改事件正确激发并获取值,正确更新Questions.NumberOfYears,但更改不会传播回视图 您的
OnPropertyChanged
方法未引发PropertyChanged
事件
按如下方式更新您的方法:
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
switch (name)
{
case "YearsToSave":
Questions.NumberOfYears = YearsToSave;
handler(this, new PropertyChangedEventArgs(name));
break;
}
}
}
您的
OnPropertyChanged
方法未引发PropertyChanged
事件
按如下方式更新您的方法:
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
switch (name)
{
case "YearsToSave":
Questions.NumberOfYears = YearsToSave;
handler(this, new PropertyChangedEventArgs(name));
break;
}
}
}
另一个选项是使用NotifyPropertyWeaver项目 我喜欢它,因为它会自动为您安排活动! (有点黑魔法,但很方便) 看
另一个选项是使用NotifyPropertyWeaver项目 我喜欢它,因为它会自动为您安排活动! (有点黑魔法,但很方便) 看
完全正确且令人尴尬。完全正确且令人尴尬。处理程序(此,新属性ChangedEventArgs(名称))?好的。谢谢你指出这一点。代码现在已更正?好的。谢谢你指出这一点。代码现在已更正。此特定项目不再积极开发:功能已转换为Fody框架的插件。此特定项目不再积极开发:功能已转换为Fody框架的插件。