首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在WPF中不使用棱镜的命令绑定

在WPF中不使用棱镜的命令绑定
EN

Stack Overflow用户
提问于 2021-06-23 17:43:03
回答 1查看 366关注 0票数 0

WPF MVVM模式中的事件绑定与棱镜库不适用于子用户控件中的按钮。

我有一个基本视图PreparationMockView,其中有一个内容控件,它是一个子视图LeftBarPrepMockView。现在,当单击LeftBarPrepMockView中的按钮时,不会触发SelectedTaskCommand

下面是父视图和子视图以及各自的视图模型。

  • 父视图:

  • 儿童视图:

  • 视图模型:

命名空间PreparationMockUp.ViewModels {公共类LeftBarPrepMockViewModel : ViewModelBase {私有只读IEventAggregator _eventAggregator;私有任务;只读字符串路径=LeftBarPrepMockViewModel公共LeftBarPrepMockViewModel(IEventAggregator ea) { _eventAggregator = ea;_eventAggregator.GetEvent().Subscribe((message) => InsertedCylinder(),ThreadOption.UIThread,true,x => x.Equals(PubSubMessages.InsertedBuildCylinder));SelectedTaskCommand = new DelegateCommand(NavigateToSelectedTask);} public ICommand SelectedTaskCommand { get;set;}私有列表_taskList;公共列表TaskList { get {返回_taskList;} set { _taskList = value;OnPropertyChanged(新PropertyChangedEventArgs("TaskList"));}} NavigateToSelectedTask(){ } }

EN

回答 1

Stack Overflow用户

发布于 2021-06-23 18:13:04

您可以将SelectedTaskCommand绑定到名为root的元素,但它并不存在于代码中。

代码语言:javascript
运行
复制
Command="{Binding SelectedTaskCommand, ElementName=root}"

假设您指的是名为ItemsControltaskDisplayList。然后可以使用ElementName创建绑定,但仍然需要引用该元素的DataContext才能绑定到视图模型。否则,绑定将搜索控件本身上的属性,该属性不存在。

代码语言:javascript
运行
复制
Command="{Binding DataContext.SelectedTaskCommand, ElementName=taskDisplayList}"

另一种方法是使用RelativeSource绑定LeftBarPrepMockView用户控件。

代码语言:javascript
运行
复制
Command="{Binding DataContext.SelectedTaskCommand, RelativeSource={RelativeSource AncestorType={x:Type local:LeftBarPrepMockView}}}" 

当然,您也可以使用绑定到ItemsControl或其他控件,而不使用ElementName

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68104783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档