繁体   English   中英

WPF-将参数从对话框窗口传递到UserControl

[英]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);
    }

以下链接包含类似问题的解决方案:

在xaml窗口和usercontrol WPF之间传递参数

“该属性始终返回null,并且永远不会被设置。” - 是错的。 在DataSourceView构造函数中,该属性为null。 创建DataSourceView实例后,属性将设置为“ Something”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM