我有一个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的工作方式相同。
任何人都知道如何让它工作,请告诉我。 谢谢, 萨姆
答案 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; }
}