我正在使用WinUI CommunityToolkit DataGrid
从this nuget包.下面是我数据网格定义:
<toolkit:DataGrid x:Name="dataGrid"
ItemsSource="{x:Bind ViewModel.Tests, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
MinHeight="500"
AreRowDetailsFrozen="False"
AreRowGroupHeadersFrozen="True"
AutoGenerateColumns="False"
CanUserSortColumns="True"
ColumnHeaderHeight="40"
FrozenColumnCount="0"
RowDetailsVisibilityMode="Collapsed"
RowGroupHeaderPropertyNameAlternative="Range">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTemplateColumn Header="Records (count)" Tag="RecordsCount" Width="150">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding RecordsCount}"/>
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
<toolkit:DataGridTemplateColumn Width="184">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<!-- Click event works but command doesn't getting executed -- >
<Button Width="40" Height="40"
Command="{Binding ViewModel.DeleteTestCommand, ElementName=testPage}"
CommandParameter="{Binding Id}">
</Button>
<Button Width="40" Height="40"
Command="{Binding ViewModel.EditTestCommand, ElementName=testPage}"
CommandParameter="{Binding Id}">
</Button>
</StackPanel>
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
下面是我视图模型:
public partial class TestsPageViewModel : ObservableRecipient
{
public IRelayCommand<int> EditTestCommand { get; }
public IRelayCommand<int> DeleteTestCommand { get; }
public TestsPageViewModel(ITestsQueryService testsQueryService, INavigationService navigationService)
{
EditTestCommand = new RelayCommand<int>(EditTest);
DeleteTestCommand = new RelayCommand<int>(DeleteTest);
Tests = new ObservableCollection<TestModel>(); //(Some tests here);
}
public void DeleteTest(int id)
{
//var test = Tests.First(P => P.Id == id);
}
public void EditTest(int id)
{
//var test = Tests.First(P => P.Id == id);
}
public ObservableCollection<TestModel> Tests
{
get => _tests;
set => SetProperty(ref _tests, value);
}
}
TestModel包含:
- 公共整型ID { get;设置; }
- public int findDuplicate {set; },...
正如我在Xaml
中提到的,Click事件适用于按钮,但命令根本不起作用。
tnx任何帮助😊
1条答案
按热度按时间guykilcj1#
我猜这是一个
DataGrid
的问题(或者通过设计?).让我给你看两个解决方法。
A.使用
Click
事件:TestPage.xaml.cs
B.在
TestModel
上添加EditCommand
:TestModel.csTestViewModel.cs