C# 数据绑定到最初为空的对象
我有一个Camera对象,该对象具有名称、SensorWidth、SensorHeight等属性。我想将这些属性绑定到UI,但Camera在应用程序启动时为空(用户可以选择任何相机)。仅当打开摄影机时,摄影机对象才会初始化(并加载其所有属性) 有没有办法在XAML中设置数据绑定,以便在初始化对象时开始工作 我可以在打开相机后在C#-设置数据绑定中轻松完成这项工作,但这必须在“视图代码隐藏”中完成,这可能不利于我使用的MVVM模式,因为打开相机的按钮使用命令界面与ViewModel通信 正确处理这一问题的方法是什么 有没有办法在XAML中设置数据绑定,以便在初始化对象时开始工作 绑定被设计为优雅地处理空值。如果您的C# 数据绑定到最初为空的对象,c#,wpf,mvvm,data-binding,C#,Wpf,Mvvm,Data Binding,我有一个Camera对象,该对象具有名称、SensorWidth、SensorHeight等属性。我想将这些属性绑定到UI,但Camera在应用程序启动时为空(用户可以选择任何相机)。仅当打开摄影机时,摄影机对象才会初始化(并加载其所有属性) 有没有办法在XAML中设置数据绑定,以便在初始化对象时开始工作 我可以在打开相机后在C#-设置数据绑定中轻松完成这项工作,但这必须在“视图代码隐藏”中完成,这可能不利于我使用的MVVM模式,因为打开相机的按钮使用命令界面与ViewModel通信 正确处理这
相机
对象在启动时为空,应该没有问题。WPF期望绑定源可能为null,并且属性路径上的任何值都可能为null
也就是说,了解绑定
何时成功生成值非常有用:
FallbackValue
在您的情况下,如果有{Binding Camera.Name}
,并且Camera
为空,则绑定将无法生成值。如果将绑定更改为{binding Camera.Name,FallbackValue='n/a'}
,则当Camera
为空时,它将生成字符串n/a
TargetNullValue
允许您在绑定确实生成有效值但该值为null的情况下指定备用值。例如,如果Camera
本身为非null,但其名称
为null,则{Binding Camera.Name,TargetNullValue='(no Name)}
将生成字符串(no Name)
有没有办法在XAML中设置数据绑定,以便在初始化对象时开始工作
绑定被设计为优雅地处理空值。如果您的相机
对象在启动时为空,应该没有问题。WPF期望绑定源可能为null,并且属性路径上的任何值都可能为null
也就是说,了解绑定
何时成功生成值非常有用:
FallbackValue
在您的情况下,如果有{Binding Camera.Name}
,并且Camera
为空,则绑定将无法生成值。如果将绑定更改为{binding Camera.Name,FallbackValue='n/a'}
,则当Camera
为空时,它将生成字符串n/a
TargetNullValue
允许您在绑定确实生成有效值但该值为null的情况下指定备用值。例如,如果Camera
本身为非null,但其Name
为null,则{Binding Camera.Name,TargetNullValue='(no Name)}
将生成字符串(no Name)
WPF数据绑定在属性路径中的任何属性为null时都没有问题。您可以声明一个最初为null的Camera属性,并像{Binding Camera.Name}
那样绑定。您只需确保Camera属性触发更改通知。您是对的,当然我错过了Camera属性中的事件。如果属性路径中的任何属性为null,则YWPF数据绑定没有问题。您可以声明一个最初为null的Camera属性,并像{Binding Camera.Name}
那样绑定。您只需确保Camera属性触发更改通知。您是对的,当然我错过了Camera属性中的事件