WPF - 将参数从 Dialog Window 传递到 UserControl
WPF - Passing parameter from Dialog Window to UserControl
我正在使用 DependencyProperty 将参数从 DialogWindow 传递到 UserControl。
我希望在 UserControl 构造函数中使用该参数,以便将其传递给视图模型。
属性总是returns 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);
}
以下 link 包含类似问题的解决方案:
Passing Parameters between xaml window and usercontrol WPF
"The property always returns null, and never get set." - 是错误的。 属性 在 DataSourceView 构造函数中为 null。 DataSourceView实例创建后,属性会被设置为"Something".
我正在使用 DependencyProperty 将参数从 DialogWindow 传递到 UserControl。 我希望在 UserControl 构造函数中使用该参数,以便将其传递给视图模型。
属性总是returns 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);
}
以下 link 包含类似问题的解决方案:
Passing Parameters between xaml window and usercontrol WPF
"The property always returns null, and never get set." - 是错误的。 属性 在 DataSourceView 构造函数中为 null。 DataSourceView实例创建后,属性会被设置为"Something".