【发布时间】:2014-05-28 19:06:15
【问题描述】:
我有一个组合框,它是从从 Observable 集合中选择获得的名称列表中填充的。但是,与这些名称相关联的是该 Observable 集合中的 ID。目标是当用户选择一个新名称(说将“John”更改为“Jill”)时,我将能够获得 ID,而不仅仅是名称。我能想到的唯一方法是以某种方式将 ID 也存储在组合框中。但我不知道如何通过绑定来做到这一点。
<DataGridTemplateColumn Header="Name ">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="namescombo" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=DataContext.Names}"
SelectedItem="{Binding Name, UpdateSourceTrigger=PropertyChanged}" FontSize="12" Background="White" FontFamily="Cambria" BorderBrush="White" BorderThickness="0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
C#
ObservableCollection<Name> Names = new ObservableCollection<Name>();
Name twofields = new Name();
var NamesQuery =
from p in dataEntities.Names
select new { p.Name, p.Id };
foreach (var p in NamesQuery)
{
Names.Add(new Name
{
ID = p.Id,
Name = p.Name
});
}
Names = Names.Select(p => p.Name).Distinct().ToList();
【问题讨论】:
-
你在使用 MVVM 模式吗?
-
DataContext.Names的数据类型是什么?是字符串枚举还是Name对象枚举? -
只是从可观察集合中选择的字符串的枚举