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


在使用DataGrid的過程中,我們有時候需要對選取的某一行數據進行多個操作,這個時候操作列只有一個按鈕顯然無法滿足我們的要求,我們需要多個按鈕才能達到我們的目的。

UI頁面代碼:

    <Grid>
        <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>
    </Grid>

 后台代碼:

        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);
        }

 調用:

GetDataGrid();

 效果圖:


免責聲明!

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



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