结合使用Datagridview和复选框 [英] Combined use of Datagridview and checkbox
问题描述
我想设计一个UI,其中,我需要从表中检索值,显示它们,然后从显示的项目中选择一个以上以进行进一步的操作?基本上是单击一些按钮,我需要显示用户名在数据网格中,然后选择 显示的用户中有不止一个可以进行进一步的诉讼.我可以通过某种方式做到这一点吗?
I want to design a UI in which ,I need to retrieve values from a table ,display them and then select more than one from the displayed item for further proceeding?Basically on clicking some button ,I need the username to be displayed in a datagrid and select more than one among the displayed users for further proceedings.Can I do that in some way?
推荐答案
您是否正在使用WPF? WPF没有DataGridView,它是一个Winform控件.我猜您使用的是DataGrid.
Are you using WPF? WPF have no DataGridView , it is a winform control. I guess you use DataGrid.
>>基本上,单击某些按钮后,我需要将用户名显示在数据网格中,并在显示的用户中选择多个用户以供进一步处理.
>>Basically on clicking some button ,I need the username to be displayed in a datagrid and select more than one among the displayed users for further proceedings.
选择多个项目后您将进行哪些进一步的诉讼程序?
what further proceedings you will do after select more than one items?
我使用Checkbox制作了一个简单的DataGrid示例.希望它对您有帮助. XAML代码
I made a simple sample of DataGrid with Checkbox. Hope it helps to you. XAML code:
<StackPanel>
<ScrollViewer >
<DataGrid x:Name="dataGrid" Margin="10" Width="500" Height="300" RowHeaderWidth="0" ItemsSource="{Binding}" SelectionMode="Extended" CanUserAddRows="False" AutoGenerateColumns="False" ColumnHeaderHeight="30" >
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<Grid>
<!--<Border x:Name="HeaderBorder" BorderBrush="Black" BorderThickness="1,0,0,0" Background="Lavender"></Border>-->
<ContentPresenter x:Name="HeaderContent" RecognizesAccessKey="True" VerticalAlignment="Center" HorizontalAlignment="Center" />
<Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right" Width="1" BorderThickness="1" BorderBrush="{Binding VerticalGridLinesBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" Cursor="SizeWE"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Background" Value="LightGray" />
<Setter Property="Height" Value="23"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#999999"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Grid Background="{TemplateBinding Background}" >
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="Foreground" Value="#FDDA1F" />
<Setter Property="FontWeight" Value="DemiBold"/>
<Setter Property="Background" Value="#9d4d5d" />
</Trigger>
<DataTrigger Binding="{Binding Path=IsSelected}" Value="True">
<Setter Property="Background" Value="#1d4d5d" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridCheckBoxColumn Width="0.5*" Binding="{Binding IsSelected ,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<DataGridCheckBoxColumn.Header>
<CheckBox Name="chkSelectAll" Checked="chkSelectAll_Checked" Unchecked="chkSelectAll_Unchecked"></CheckBox>
</DataGridCheckBoxColumn.Header>
</DataGridCheckBoxColumn>
<DataGridTextColumn Binding="{Binding ID}" Header="ID" Width="1*"/>
<DataGridTextColumn Binding="{Binding FirstName}" Header="First Name" Width="1*"/>
<DataGridTextColumn Binding="{Binding LastName}" Header="Last Name" Width="1*"/>
<DataGridTextColumn Binding="{Binding Age}" Header="Age" Width="1*"/>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
<Button x:Name="addUser" Width="200" Height="30" Content="Add" Click="addUser_Click"/>
</StackPanel>
C#代码:
namespace wpfAppDemo.wpfDataGrid
{
/// <summary>
/// Interaction logic for sample1.xaml
/// </summary>
public partial class sample1 : Window
{
ObservableCollection<User> userList = new ObservableCollection<User>() {
new User() {ID =0, FirstName="Bob",LastName="Ding",Age=27,IsSelected = false },
new User() {ID =1, FirstName="Wendy",LastName="Zang",Age=24 ,IsSelected = false},
new User() {ID =2, FirstName="Emily",LastName="Zhang",Age=24,IsSelected = true },
new User() {ID =3, FirstName="Stanly",LastName="Fan",Age=25 ,IsSelected = false},
new User() {ID =4, FirstName="Hart",LastName="Wang",Age=27,IsSelected = true },
new User() {ID =5, FirstName="Amol",LastName="Wang",Age=32,IsSelected = true },
new User() {ID =6, FirstName="kobe",LastName="Brant",Age=39,IsSelected = false },
};
public sample1()
{
InitializeComponent();
this.DataContext = userList;
dataGrid.ScrollIntoView(userList.Last());
}
static int index = 0;
private void addUser_Click(object sender, RoutedEventArgs e)
{
userList.Add(new User { ID = index, FirstName = "first name" + index, LastName = "last name" + index, Age = 39 });
dataGrid.ScrollIntoView(userList.Last());
dataGrid.SelectedIndex = dataGrid.Items.Count - 1;
index++;
}
private void chkSelectAll_Checked(object sender, RoutedEventArgs e)
{
foreach (User c in dataGrid.ItemsSource)
{
c.IsSelected = true;
}
}
private void chkSelectAll_Unchecked(object sender, RoutedEventArgs e)
{
foreach (User c in dataGrid.ItemsSource)
{
c.IsSelected = false;
}
}
}
public class User: INotifyPropertyChanged
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
private bool _IsSelected = false;
public event PropertyChangedEventHandler PropertyChanged;
public bool IsSelected
{
get { return _IsSelected; }
set { _IsSelected = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsSelected")); }
}
}
}
最好的问候,
鲍勃
这篇关于结合使用Datagridview和复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!