簡體   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