[英]WPF - Passing parameter from Dialog Window to UserControl
我正在使用DependencyProperty将参数从DialogWindow传递到UserControl。 我想要在UserControl构造函数中将该参数传递给视图模型。
该属性始终返回null,并且永远不会设置。
码:
主窗口:
var dialog = new DialogWindow();
dialog.ShowDialog();
DialogWindow.xaml
<TabControl>
<TabItem Header="Data Source">
<local:DataSourceView Test="Something" />
</TabItem>
</TabControl>
DataSourceView.xaml.cs
public static readonly DependencyProperty TestProperty =
DependencyProperty.Register("Test", typeof(object), typeof(DataSourceView));
public object Test {
get { return (object)GetValue(TestProperty); }
set { SetValue(TestProperty, value); }
}
public DataSourceView() {
InitializeComponent();
DataContext = new DataSourceViewModel(Test);// Test is always null
}
您可以将DependencyProperty.Register
方法的重载与PropertyMetadata
,该方法将具有PropertyChangedCallback
参数并观察数据绑定过程。
public static readonly DependencyProperty TestProperty =
DependencyProperty.Register("Test", typeof(object), typeof(DataSourceView), new PropertyMetadata(TestPropertyChangedCallback
));
private static void TestPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.NewValue);
System.Diagnostics.Debug.WriteLine(e.OldValue);
}
以下链接包含类似问题的解决方案:
“该属性始终返回null,并且永远不会被设置。” - 是错的。 在DataSourceView构造函数中,该属性为null。 创建DataSourceView实例后,属性将设置为“ Something”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.