2017-05-08 16 views
0

私は、DialogWindowからUserControlにパラメータを渡すためにDependencyPropertyを使用しています。 ビューモデルに渡すために、そのパラメータをUserControlコンストラクタ内に配置します。WPF - ダイアログウィンドウから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 
} 

答えて

1

あなたがしてDependencyProperty.Registerメソッドのオーバーロードを使用することができますPropertyMetadataPropertyChangedCallbackのパラメータを持ち、データバインディングプロセスを観察します。リンク後

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); 
    } 

は、同様の問題のためのソリューションが含まれています

Passing Parameters between xaml window and usercontrol WPF

+0

はここに似たような状況があります: [リンク](http://stackoverflow.com/questions/21717600/passing-parameters-between-xaml-window-and-usercontrol-wpf?rq=1) DataContextの設定をLoadedイベントハンドラに移動する必要があります。 – madiden

+0

コールバックメソッドを使用すると、Viewインスタンスが完了した後にプロパティが設定され、コメント内で提供されたリンクを使用して、適切な値にアクセスできるようになりました。あなたのコメントにリンクが含まれるように答えを更新してください。ありがとう:) – IBRA

1

"プロパティは常にnullを返し、設定されていません飽きません。" - 間違っている。このプロパティは、DataSourceViewコンストラクタではnullです。 DataSourceViewのインスタンスが作成されると、プロパティは「Something」に設定されます。

+0

はい、あなたが正しいです、私はそれがマディデンの答えに示唆されているコールバックメソッドを使用して気づいた。ご回答有難うございます :) – IBRA

関連する問題