1
我想獲取選定的行,但selecteditems只有一行。我想得到所有檢查的項目。我想我需要添加事件處理程序時,複選框被清除,然後收集所有。我如何以最佳方式做到這一點?Wpf工具包datagrid DataGridCheckBoxColumn on_click事件:
我想獲取選定的行,但selecteditems只有一行。我想得到所有檢查的項目。我想我需要添加事件處理程序時,複選框被清除,然後收集所有。我如何以最佳方式做到這一點?Wpf工具包datagrid DataGridCheckBoxColumn on_click事件:
您是否使用數據綁定來填充您的DataGrid?如果是這樣,將列的選中值綁定到您的支持對象中的布爾值可能是「最好的」(如在:最佳實踐)方式來做到這一點。下面是一些示例代碼:
<Window x:Class="CheckGridSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tk="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
Title="Window1" Height="300" Width="300">
<StackPanel>
<tk:DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Header="Name" Binding="{Binding Name}" />
<tk:DataGridCheckBoxColumn Header="Selected" Binding="{Binding IsChecked}" />
</tk:DataGrid.Columns>
</tk:DataGrid>
<Button Content="Which Items Are Checked?" Click="Button_Click" />
</StackPanel>
</Window>
using System;
using System.Linq;
using System.Text;
using System.Windows;
namespace CheckGridSample
{
public partial class Window1
{
public Window1()
{
InitializeComponent();
DataContext = new[]
{
new MyModel {Name = "Able"},
new MyModel {Name = "Baker", IsChecked = true},
new MyModel {Name = "Charlie"}
};
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var builder = new StringBuilder();
foreach (var item in ((MyModel[]) DataContext).Where(m => m.IsChecked))
builder.Append(Environment.NewLine + item.Name);
MessageBox.Show("Checked:" + builder);
}
}
public class MyModel
{
public string Name { get; set; }
public bool IsChecked { get; set; }
}
}
你想使用複選框或只支持多選?選擇是項目上的藍色突出顯示,與是否檢查給定列完全不同。 – 2010-04-09 20:21:22