如何将DataGrid.Columns与comboBox一起使用

时间:2016-05-15 09:24:12

标签: wpf data-binding wpfdatagrid datagridcomboboxcolumn

它很复杂,因为我正在通过UserX对象进行复制列表。 我有用户列表,我想在表格中显示它们。 我需要在Role列中,comboBox的默认值将是用户的当前角色,我需要选择通过使用ComboBox来更改此角色,我不知道如何(可能的角色是:管理员,经理和雇员)

谢谢你的帮助。这是代码:

XAML

  <DataGrid FontSize="20" Name="dgUsers" ItemsSource="{Binding list}" AutoGenerateColumns="False" ScrollViewer.VerticalScrollBarVisibility="Visible">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="#" Binding="{Binding Id}" />
                    <DataGridTextColumn Header="Username" Binding="{Binding Username}" />
                    <DataGridTextColumn Header="Password" Binding="{Binding Password}" />
                    <DataGridComboBoxColumn  Header="Role" ItemsSource="{Binding Role}" />
                    <DataGridTemplateColumn Header="Remove">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Button Click="ButtonRemove" Content="Remove User"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

                </DataGrid.Columns>
            </DataGrid>

CS

        List<User> users = user.getUsersList();
        List<Userx> updated = new List<Userx>();
        //coping from  the list users to list updated. I did it to gete the binding 
        for (int i = 0; i < users.Count; i++)
            updated.Add(new Userx() { Id = i + 1, Username = users.ElementAt(i).getUsername(),
                                                    Password = users.ElementAt(i).GetPassword(),
                                                    Role = users.ElementAt(i).getRole() });            
        dgUsers.ItemsSource = updated;
    }

1 个答案:

答案 0 :(得分:0)

你可以试试下面的代码吗?要 ComboBoxSelectedItem 属性,请添加当前角色。

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid FontSize="20" Name="dgUsers" ItemsSource="{Binding list}" AutoGenerateColumns="False" ScrollViewer.VerticalScrollBarVisibility="Visible">
            <DataGrid.Columns>
                <DataGridTextColumn Header="#" Binding="{Binding Id}" />
                <DataGridTextColumn Header="Username" Binding="{Binding Username}" />
                <DataGridTextColumn Header="Password" Binding="{Binding Password}" />
                <DataGridComboBoxColumn  Header="Role" ItemsSource="{Binding Role}" SelectedItemBinding="{Binding ComboBoxSelectedItem}" />
                <DataGridTemplateColumn Header="Remove">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Click="ButtonRemove" Content="Remove User"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>