首页 > 解决方案 > 获取绑定 ViewModel 的对话框属性

问题描述

对于我的应用程序,我创建了一个<Window>绑定到 ViewModel 的弹出窗口。

弹出窗口的视图模型:

public class GeneratorSelectionViewModel : BaseViewModel
{
    private Window mWindow;

    public ICommand SelectedCommand { get; set; }
    public GeneratorListItem SelectedItem { get; set; }

    public GeneratorSelectionViewModel(Window window)
    {
        mWindow = window;
        SelectedCommand = new RelayCommand(GeneratorSelected);
    }
    private void GeneratorSelected(object parameter)
    {
        if (SelectedItem != null)
        {
            mWindow.DialogResult = true;
        }
    }
}

...绑定到这个弹出窗口(这里是代码隐藏):

public partial class GeneratorSelectionPopup : Window
{
    public GeneratorSelectionPopup()
    {
        InitializeComponent();
        this.DataContext = new GeneratorSelectionViewModel(this);
    }
}

在那个窗口中,我有一个列表框,其中 SelectedItem 绑定到 VM 的 SelectedItem 属性。

我通过以下方式调用此弹出窗口:

        GeneratorSelectionPopup SelectionPopup = new GeneratorSelectionPopup();
        SelectionPopup.ShowDialog();

现在我的问题...如何将公共属性SelectedItem从弹出窗口视图模型转移到主窗口?

`SelectionPopup.SelectedItems` isn't available.

标签: wpfpopupwindow

解决方案


投射DataContext窗口:

GeneratorSelectionPopup SelectionPopup = new GeneratorSelectionPopup();
SelectionPopup.ShowDialog();
var selectedItem = (SelectionPopup.DataContext as GeneratorSelectionViewModel).SelectedItem;

推荐阅读