将集合绑定到ComboBox和DataGrid

时间:2019-09-18 08:42:21

标签: c# wpf combobox datagrid mahapps.metro

我有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。

1 个答案:

答案 0 :(得分:0)

在您的DataGridComboBoxColumn中,您可以提供SelectedValueBinding和SelectedValuePath

<DataGridComboBoxColumn x:Name="appSellection" SelectedValueBinding="{Binding ApplicationId}" SelectedValuePath="Value" DisplayMemberPath="Key"/>
相关问题