.NET Core 3.1 更新交互触发器和 Prism 后没有触发 SelectionChanged 事件

Posted

技术标签:

【中文标题】.NET Core 3.1 更新交互触发器和 Prism 后没有触发 SelectionChanged 事件【英文标题】:.NET Core 3.1 after updating Interaction Trigger and Prism no SelectionChanged event was firing 【发布时间】:2021-12-26 01:06:43 【问题描述】:

今天我已将所有交互触发器从 http://schemas.microsoft.com/expression/2010/interactivity 更改为 http://schemas.microsoft.com/xaml/behaviors。现在我的问题是,视图模型中没有触发 selectionChanged 事件。我的数据源是视图模型。

我的代码:

<ComboBox Name="CBGL" ItemsSource="Binding Path=Troughs" 
          DisplayMemberPath="TroughNumber"  SelectedValuePath="Id" 
          SelectedValue="Binding Model.Trough" Width="173">
     <i:Interaction.Triggers>
          <i:EventTrigger EventName="SelectionChanged">
               <i:InvokeCommandAction  Command="Binding CBGLRegionChangedCmd" />
          </i:EventTrigger>
     </i:Interaction.Triggers>

如果有人更改了选择,CBGLRegionChangedCmd 不会触发。

来自视图模型的代码:

CBGLRegionChangedCmd = new MyICommand(InvokeCommandAction_Changed);

如果我撤消更新一切正常...

【问题讨论】:

这些答案有帮助吗? ***.com/questions/20743961/… 【参考方案1】:

您必须将 ViewModel 添加到此问题以获得最佳答案。 但我认为您在 SelectedValue="Binding Model.Trough" 中的绑定是错误的 请在视图模型中定义一个完整的属性,其类型为 Trough 和 xxx 名称,然后在其中调用 notifyPropertyChange() 方法,然后设置 SelectedItem="Binding xxx,UpdateSourceTrigger=PropertyChanged"

您还可以在 int 类型的视图模型中设置一个属性 full ,名称为 yyy 并将其绑定到 SelectedValue 属性,例如: SelectedValue="Binding yyy,UpdateSourceTrigger=PropertyChanged"

【讨论】:

以上是关于.NET Core 3.1 更新交互触发器和 Prism 后没有触发 SelectionChanged 事件的主要内容,如果未能解决你的问题,请参考以下文章

小5聊.net core 3.1 配置MVC路由和API

将项目从 2.2 更新到 3.1(缺少程序集)或如何在 .NET Core 中使用 API POST 请求时,PostAsJsonAsync()在 .Net Core 3.1 中不起作用 [重复]

命令更新迁移、Entity Framework 3.15、Net Core 3.1 中的错误

微软 .NET Core 3.1 年底将结束支持,请升级到.NET 6

重要消息丨.NET Core 3.1 将于今年12月13日结束支持

ASP.NET Core 3.1 MVC JWT 登录返回 401