wpf - 获取绑定 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.
解决方案
投射DataContext
窗口:
GeneratorSelectionPopup SelectionPopup = new GeneratorSelectionPopup();
SelectionPopup.ShowDialog();
var selectedItem = (SelectionPopup.DataContext as GeneratorSelectionViewModel).SelectedItem;
推荐阅读
- python - xlsxwriter y2 轴格式不正确
- java - 使用动态数组实现的 HashMap 的时间复杂度是多少?
- list - 错误:启用空安全时,默认的“列表”构造函数不可用
- view - 是否可以在 Apache Calcite 中创建非物化视图?
- visual-studio-code - VSCode 中 VC 格式设置的更改不起作用
- virtual-machine - 哪些 API 用于从 WSL v2 bash 运行 powershell?
- python-3.x - 如何将额外数据传递给 fastapi APIRouter?
- python - 将数据从单列转换为熊猫中的多列
- sql - 从字符串中提取版本号并按最小版本过滤
- javascript - 通过单击屏幕上的任意位置触发的菜单汉堡动画