如何在單擊按鈕時選擇所有行/取消選擇 WPF 資料網格的所有行而不會弄亂 MVVM 模式?
目前我在做這樣的事情:
XAML
<Button Command="{Binding SelButtonClicked}" .../>
在主視圖模型中
public RelayCommand SelButtonClicked { get; set; }
...
Public Mainviewmodel()
{
SelButtonClicked = new RelayCommand(SelUnsel);
}
...
public void SelUnsel(object param)
{
var win = Application.Current.Windows
.Cast<Window>()
.FirstOrDefault(window => window is MainWindow) as MainWindow;
if (win.myGrid.SelectedItems.Count > 0)
{
win.myGrid.UnselectAll();
}
else
{
win.myGrid.SelectAll();
}
}
但我很確定這不是 MVVM 方式......
uj5u.com熱心網友回復:
<Button Command="{Binding SelButtonClicked}"
CommandParameter="{Binding SelectedItems, ElementName=dataGrid}"
.../>
private void SelUnsel(object param)
{
IList list = (IList) param;
list.Clear();
}
我該怎么做相反的操作,即全選?
private void SelAll(object param)
{
IList list = (IList) param;
foreach(var item in SomeItemCollection)
list.Add(item);
}
uj5u.com熱心網友回復:
所以,這是我使用@EldHasp 所示方法的最終實作。
<Button Command="{Binding SelButtonClicked}"
CommandParameter="{Binding SelectedItems, ElementName=dataGrid}"
.../>
public void SelUnsel(object param)
{
IList list = (IList) param;
if (list.Count > 0)
{
list.Clear();
}
else
{
foreach(var item in dgItemSource)
list.Add(item);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535128.html
