[我正在尝试找出如何bind
使用button
来选择rows
中的所有DataGrid
(项目)。
我发现与此最相关的事情是使用列标题选择所有复选框:
caliburn.micro
但是我希望将此按钮与DataGrid with Select All分开。
类似:
查看:
DataGrid
ViewModel:
<Button x:Name="SelectAll"/>
<DataGrid x:Name="People">
<DataGrid.RowStyle>
<Style>
<Setter Property="DataGridRow.IsSelected"
Value="{Binding IsPartSelected}" />
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Name"
Binding="{Binding PersonName, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
</DataGrid>
或以某种方式为public bool _isPartSelected = false;
public bool IsPartSelected
{
get { return _isPartSelected; }
set { _isPartSelected = value;
NotifyOfPropertyChange(() => IsPartSelected);
}
}
public void SelectAll()
{
if(IsPartSelected == true)
{
IsPartSelected = false;
}
else
{
IsPartSelected = true;
}
}
调用SelectAllCommand
RoutedUICommand
?
任何建议/帮助将不胜感激。
答案就在您共享的链接中。您需要将Button click事件绑定到ViewModel中的SelectAll属性,并循环通过列表中的所有项绑定到PersonName列。
Caliburn.Micro具有用于视图/视图模型通信的某些不同机制,可以作为称为“动作”的命令的替代方法。
DataGrid
只需在ViewModel中编写Handler方法SelectAll并遍历所有项以选择它们。