WPF datagrid 列按鈕使用


 

原文:WPF中使用DataGrid時操作列按鈕問題

 

 

     <DataGrid x:Name= "datagrid"  AutoGenerateColumns= "False"  ScrollViewer.HorizontalScrollBarVisibility= "Hidden"  SizeChanged= "datagrid_SizeChanged"  RowHeaderWidth= "0"  IsReadOnly= "True"  BorderBrush= "Transparent"  BorderThickness= "1" >
         <DataGrid.ColumnHeaderStyle>
             <Style TargetType= "DataGridColumnHeader" >
                 <Setter Property= "HorizontalContentAlignment"  Value= "Center" ></Setter>
                 <Setter Property= "FontSize"  Value= "20" ></Setter>
                 <Setter Property= "FontWeight"  Value= "ExtraBold" ></Setter>
                 <Setter Property= "Height"  Value= "50" ></Setter>
             </Style>
         </DataGrid.ColumnHeaderStyle>
 
         <DataGrid.Columns>
             <DataGridTextColumn x:Name= "UserName"  Binding= "{Binding Name}"  Header= "姓名"  FontSize= "20" />
             <DataGridTextColumn x:Name= "UserSex"  Binding= "{Binding Sex}"  Header= "性別"  FontSize= "20" />
             <DataGridTextColumn x:Name= "UserAge"  Binding= "{Binding Age}"  Header= "是否完成"  FontSize= "20" />
             <DataGridTextColumn x:Name= "UserPhone"  Binding= "{Binding Phone}"  Header= "下發時間"  FontSize= "20" />
             <DataGridTemplateColumn x:Name= "UserAction"  Header= "操作"  Width= "100" >
                 <DataGridTemplateColumn.CellTemplate>
                     <DataTemplate>
                         <StackPanel Orientation= "Horizontal" >
                             <Button x:Name= "BtnAction"  Content= "{Binding BtnActionStr}"  Height= "34"
                                     Width= "80"  Click= "BtnAction_Click"  IsEnabled= "{Binding Enabled}"
                                     FontSize= "20"   HorizontalContentAlignment= "Center"  VerticalContentAlignment= "Center" >
                             </Button>
                             <Button x:Name= "BtnAction1"  Content= "{Binding BtnActionStr1}"  Height= "34"
                                     Width= "80"  Click= "BtnAction1_Click"  IsEnabled= "{Binding Enabled1}"
                                     FontSize= "20"   HorizontalContentAlignment= "Center"  VerticalContentAlignment= "Center" >
                             </Button>
                         </StackPanel>
                     </DataTemplate>
                 </DataGridTemplateColumn.CellTemplate>
             </DataGridTemplateColumn>
         </DataGrid.Columns>
     </DataGrid>
 
 
后台代碼
 
List<User> users =  new  List<User>();
//向DataGrid中添加數據
private  void  GetDataGrid()
{
     for  ( int  i = 0; i < 10; i++)
     {
         User user =  new  User();
         user.Name =  "Tom" ; user.Sex =  "男" ; user.Age =  "18" ; user.Phone =  "000000" ;
         user.BtnActionStr =  "按鈕"  + i;
         user.BtnActionStr1 =  "按鈕"  + (i + 1);
         if  (i % 2 == 0)
         {
             user.Enabled =  true ;
             user.Enabled1 =  false ;
         }
         else
         {
             user.Enabled =  false ;
             user.Enabled1 =  true ;
         }
         users.Add(user);
     }
     //數據綁定
     datagrid.ItemsSource = users;
}
//定義要綁定的類
private  class  User
{
     public  string  Name {  get set ; }
     public  string  Sex {  get set ; }
     public  string  Age {  get set ; }
     public  string  Phone {  get set ; }
     public  string  BtnActionStr {  get set ; }
     public  bool  Enabled {  get set ; }
     public  string  BtnActionStr1 {  get set ; }
     public  bool  Enabled1 {  get set ; }
}
//平均分配各列的寬度
private  void  datagrid_SizeChanged( object  sender, SizeChangedEventArgs e)
{
     int  WidthSize = ( int )(datagrid.ActualWidth / 5 - 4);
     UserName.Width = WidthSize; UserSex.Width = WidthSize; UserAge.Width = WidthSize;
     UserPhone.Width = WidthSize; UserAction.Width = WidthSize;
}
//第一個按鈕點擊事件
private  void  BtnAction_Click( object  sender, RoutedEventArgs e)
{
     MessageBox.Show(users[datagrid.SelectedIndex].Name);
}
//第二個按鈕點擊事件
private  void  BtnAction1_Click( object  sender, RoutedEventArgs e)
{
     MessageBox.Show(users[datagrid.SelectedIndex].Sex);
}
 

 調用:

1
GetDataGrid();

 效果圖:

勿忘初心,方得始終。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM