gpt4 book ai didi

c# - 绑定(bind)数据网格按钮 mvvm

转载 作者:行者123 更新时间:2023-12-03 10:17:23 25 4
gpt4 key购买 nike

我有数据网格,其中一列是按钮列,我想将此点击绑定(bind)到 View 模型,但它没有到达 View 模型函数。

<DataGrid  CanUserAddRows="False" AutoGenerateColumns="False"  ItemsSource="{Binding TableComments}" SelectedItem="{Binding SelectedRow}"     x:Name="dataGrid" >
<DataGrid.Columns >
<DataGridTemplateColumn Header="Delete">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding DeleteCommentCommand}" >Delete</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

在 View 模型中:

public ICommand DeleteCommentCommand { get; private set; }
public MyViewModel()
{
DeleteCommentCommand = new RelayCommand(Delete);
}

void Delete()
{
}

我感觉问题出在这一行:

 <Button Command="{Binding DeleteCommentCommand}" >Delete</Button>

最佳答案

DeleteCommentCommand 绑定(bind)到 DataGrid 项 DataContext,而不是 DataGrid DataContext 本身 (ViewModel)。您应该在 CellTemplate 中设置适当的 DataContext 或稍微更新绑定(bind),例如

Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=DataContext.DeleteCommentCommand}"

您还可以更新命令并将参数传递给RelayCommandDelete 方法

public MyViewModel()
{
DeleteCommentCommand = new RelayCommand(item => Delete(item));
}

void Delete(object item)
{
}

并在 xaml 中传递值 CommandParameter="{Binding}"

关于c# - 绑定(bind)数据网格按钮 mvvm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449122/

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