私は、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
}
はここに似たような状況があります: [リンク](http://stackoverflow.com/questions/21717600/passing-parameters-between-xaml-window-and-usercontrol-wpf?rq=1) DataContextの設定をLoadedイベントハンドラに移動する必要があります。 – madiden
コールバックメソッドを使用すると、Viewインスタンスが完了した後にプロパティが設定され、コメント内で提供されたリンクを使用して、適切な値にアクセスできるようになりました。あなたのコメントにリンクが含まれるように答えを更新してください。ありがとう:) – IBRA