gpt4 book ai didi

wpf - 如何在WPF数据网格中获取当前元素以及如何使用它?

转载 作者:行者123 更新时间:2023-12-03 10:14:11 27 4
gpt4 key购买 nike

不久前,我开始使用tutorial研究MVVM模式。我使用MicroMvvm。

我有一个带有EntityFramework模型的WPF项目。我写了ViewModels和XAML View 。
我想在DataGrid中显示数据。(2列包含数据和2个按钮列:编辑,删除)

<DataGrid Height="250" ItemsSource="{Binding Books}" AutoGenerateColumns="False" >
<DataGrid.Resources>
<DataTemplate x:Key="DeleteTemplate" >
<Button x:Name="DeleteButton" Command="{Binding DeleteBook, Mode=OneWay}" CommandParameter="{Binding}" >Delete</Button>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Title}" Header="Book"/>
<DataGridTextColumn Binding="{Binding Author}" Header="Author"/>
<DataGridTemplateColumn CellTemplate="{StaticResource EditTemplate}" Header="Редактировать"/>
<DataGridTemplateColumn CellTemplate="{StaticResource DeleteTemplate}" Header="Удалить"/>
</DataGrid.Columns>
</DataGrid>

在我的LibraryViewModel.cs中

#region Commands
void DeleteBookExecute()
{
if (_books == null)
return;

//MessageBox.Show("This is delete button. Delete item id:" myMysticalObjectFromCommandParameter );
}
bool CanDeleteBookExecute()
{
return true;
}
public ICommand DeleteBook
{
get
{
return new RelayCommand(DeleteBookExecute, CanDeleteBookExecute);
}
}

当我按下按钮(删除/编辑)时,我想删除/编辑当前对象。
我不知道如何在MVVM中进行操作。

我可以用 Command="{Binding DeleteBook, Mode=OneWay}" CommandParameter="{Binding}"吗?

如果正确,如何从LibraryViewModel中的 CommandParameter获取数据?

最佳答案

正如DHN所说,您的命令执行方法DeleteBookExecute()CanDeleteBookExecute()应该具有类型为object的参数。

您的想法正指向正确的方向。试试这个:

<DataGrid Name="LibraryGrid"
Height="250"
ItemsSource="{Binding Books}"
AutoGenerateColumns="False" >


Command="{Binding DataContext.DeleteBook, ElementName=LibraryGrid}" CommandParameter="{Binding}"

ElementNameDataContext.DeleteBook结合使用可获取LibraryViewModel的命令。

关于wpf - 如何在WPF数据网格中获取当前元素以及如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291864/

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