Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF-将参数从对话框窗口传递给UserControl_C#_Wpf_Xaml_Mvvm_Dependency Properties - Fatal编程技术网

C# WPF-将参数从对话框窗口传递给UserControl

C# WPF-将参数从对话框窗口传递给UserControl,c#,wpf,xaml,mvvm,dependency-properties,C#,Wpf,Xaml,Mvvm,Dependency Properties,我正在使用DependencyProperty将参数从DialogWindow传递到UserControl。 我希望该参数位于UserControl构造函数中,以便将其传递给视图模型 该属性始终返回null,并且从未设置 代码: 主窗口: var dialog = new DialogWindow(); dialog.ShowDialog(); DialogWindow.xaml <TabControl> <TabItem Header="Data Source"&g

我正在使用DependencyProperty将参数从DialogWindow传递到UserControl。 我希望该参数位于UserControl构造函数中,以便将其传递给视图模型


该属性始终返回null,并且从未设置

代码:

主窗口:

var dialog = new DialogWindow();
dialog.ShowDialog();
DialogWindow.xaml

<TabControl>
    <TabItem Header="Data Source">
        <local:DataSourceView Test="Something" />
    </TabItem>
</TabControl>

您可以使用
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);
    }
以下链接包含类似问题的解决方案:


您可以使用
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”。

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

这里有一个类似的情况:您应该将DataContext的设置移动到已加载的事件处理程序。使用回调方法,我发现属性在视图实例完成后设置,并使用您在注释中提供的链接,我现在可以访问正确的值。请更新您的答案,以便在您的评论中包含该链接。谢谢:)这里也有类似的情况:您应该将DataContext的设置移动到已加载的事件处理程序。使用回调方法,我发现在视图实例完成后设置了属性,并且使用您在注释中提供的链接,我现在可以访问正确的值。请更新您的答案,以便在您的评论中包含该链接。谢谢:)是的,你说得对,我注意到使用麦迪登回答中建议的回拨方法。谢谢你的回答:)是的,你说得对,我注意到使用麦迪登回答中建议的回拨方法。谢谢你的回答:)