我有CSV文件和REST API的两个集合-设备和应用程序。每个“设备”类型的对象都通过属性“ ApplicationId”绑定到其应用程序。我能够显示DataGrid中的每个设备,并且希望允许用户从分配给每个设备的ComboBox(放置在每一行中)应用程序中进行选择,并将它们发送到API。我想显示在组合框“ ApplicationName”中,并通过选择在“设备”中设置“ ApplicationId”。
public class Device
{
public string Name { get; set; }
public string ApplicationId{ get; set; } //set this
//...
}
public class Application
{
public string Name { get; set; }
public string ApplicationId { get; set; }//to this
//...
}
public class NewDevicesViewModel
{
public Dictionary<string, string> Applications { get; set; }//Extracted from Application collection
public ObservableCollection<Device> Devices { get; set; }//Content of DataGrid
}
public MainWindow(string devicesCsv)
{
InitializeComponent();
Mock_InitGrid(devicesCsv);
devices.ItemsSource = NewDevices.Devices;
appSellection.ItemsSource = NewDevices.Applications;
}
<DataGrid x:Name="devices" Margin="10,20,10,0"
AutoGenerateColumns="True"
Style="{StaticResource AzureDataGrid}">
<DataGrid.Columns>
<DataGridComboBoxColumn x:Name="appSellection">
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
因此,我填充了DataGrid和ComboBox,但是在将ComboBox的“ Value”绑定到DataGrid行中的“ ApplicationId”时遇到了问题。另外,我不知道如何仅在ComboBox中显示应用名称(现在是“ [Key,Value]”),以及如何在ComboBox列中添加名称。如果那很重要,我正在使用mahhaps.metro。
答案 0 :(得分:0)
在您的DataGridComboBoxColumn中,您可以提供SelectedValueBinding和SelectedValuePath
<DataGridComboBoxColumn x:Name="appSellection" SelectedValueBinding="{Binding ApplicationId}" SelectedValuePath="Value" DisplayMemberPath="Key"/>