gpt4 book ai didi

wpf - 如何翻译 CodeBehind WPF 事件;事件、处理程序、事件 setter 到 MVVM 模式?

转载 作者:行者123 更新时间:2023-12-03 11:00:38 31 4
gpt4 key购买 nike

我正在尝试将 WPF CodeBehid 事件(如 Event、Handler、EventSetter)转换为 MVVM 模式。我不允许使用 System.Windows.Controls,因为我使用的是 MVVM。而且我也避免使用 3rd 方库来解决这个问题。

有人可以解释如何将以下 CodeBehind 事件处理程序转换为 MVVM 事件处理程序吗?请在写答案时尽可能多地解释。

XAML 代码

<DataGridCheckBoxColumn Header="Select" Binding="{Binding Path=IsSelected}"> 
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="DataGridCell">
<EventSetter Event="MouseLeftButtonUp" Handler="ApprovedMouseUp"></EventSetter>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>

代码背后
private void ApprovedMouseUp(object sender, MouseButtonEventArgs e) 
{
if(sender is DataGridCell)
{
var temp = (sender as DataGridCell).Content;
if(temp is CheckBox) (temp as CheckBox).IsChecked = !(temp as CheckBox).IsChecked;
}
}

最佳答案

关于 MVVM 的经验法则很少......

  • 您的 ModelsViewModles不应该引用 System.Windows.Controls命名空间。
  • 您的 ModelsViewModles不应该处理事件。使用ICommand接口(interface)。
  • RoutedCommand在模型/ View 模型中无效(由于第 2 点)。因此使用 DelegateCommand/RelayCommand

  • 话虽如此,以上几点都是完美的 允许 如果您写过 Attached Behavior MVVM .

    关于wpf - 如何翻译 CodeBehind WPF 事件;事件、处理程序、事件 setter 到 MVVM 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816067/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com