WPF Datagrid从特定行的单元格中选择一个值

时间:2016-02-16 16:20:54

标签: wpf vb.net datagrid

我有一个DataGrid有3列(id,User,MachineID)我希望从这个网格中获取机器ID。我希望使用复选框来选择多行,但我只需要一次排序一行。

<DataGrid Grid.Column="0" Grid.Row="0"
          DockPanel.Dock="Bottom" AutoGenerateColumns="False" 
          ItemsSource="{Binding Path=UserList}" SelectionMode="Single"
          SelectedItem="{Binding SelectedCpuID, Mode=TwoWay}">
            <DataGrid.Columns>
            <DataGridTextColumn Header="ID" Binding="{Binding UserID}"></DataGridTextColumn>
            <DataGridTextColumn Width="200" Header="User" Binding="{Binding UserName}"></DataGridTextColumn>
            <DataGridTextColumn Width="210" Header="Machine ID" Binding="{Binding MachineID}"></DataGridTextColumn>

它绑定到视图模型但我得到的是对象名而不是行的内容(application.Users)。我试过了SelectedItem="{Binding SelectedCpuID.MachineID, Mode=TwoWay}">但也没用。我是WPF和数据绑定的新手,所以我一直试图解决我们在这里制作的另一个程序,它做了类似的事情,但使用了组合框,它似乎与datagrid的工作方式相同。

任何人都知道如何让它工作,请告诉我。 谢谢, 萨姆

1 个答案:

答案 0 :(得分:1)

您可能只是缺少显示数据网格的COLUMNS。 DataGrid的ItemsSource,例如DataTable,或者要向用户呈现的所有项目的Collection(List&lt;&gt;或其他IEnumerable)。从那里,你需要定义你想要显示的每一列,并给出这些特征(宽度,字体,着色等)。每列的绑定是一个路径,因为它可以在UserList的每个条目中找到。

然后,

<DataGrid
    ItemsSource="{Binding UserList}"
    AutoGenerateColumns=False >

    <DataGrid.Columns>
        <DataGridTextColumn Header="Id" Binding="{Binding Path=Id}" />
        <DataGridTextColumn Header="User" Binding="{Binding Path=User}" />
        <DataGridTextColumn Header="Machine" Binding="{Binding Path=MachineID}" />
    </DataGrid.Columns>
</DataGrid>

现在,您的UserList来源。如果是List(),则每个属性都应该通过getter / setter可用,例如......

public class SomeUserClass()
{
   public string Id {get; set;}
   public string User {get; set;}
   public string MachineID {get; set; }
}