我有一个DataGrid,其中itemsource被设置为名为sorties的可观察集合
其中一个名为' Location'需要多重绑定。基本上,单元格输入中的值是ID,输出需要是名称。多重绑定器将获取ID和另一个位置集合,并找到要返回的名称。
例如
WPF
<DataGridTextColumn Header="ICAO">
<DataGridTextColumn.Binding>
<MultiBinding Converter="{StaticResource ICAOIDConverter}">
<Binding Path="TakeoffLocationID"/>
<Binding Path="Locations*" />
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
转换器
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Debug.Print(values[0].GetType().Name.ToString());
Debug.Print(values[1].GetType().Name.ToString());
int id = (int)values[0];
ObservableCollection<Location> locs = values[1] as ObservableCollection<Location>;
try
{
Location l = locs.Where(x => x.ID == id).FirstOrDefault();
return l.ICAO;
}
catch { return DependencyProperty.UnsetValue; }
}
这是我的问题。我的datagrid项目源设置为&#34; Sorties&#34;班级集合。在这个集合中存在&#39; TakeoffLocationID&#39;第一个绑定的路径,但&#39;位置&#39;此类中不存在要在我的第二个绑定中使用的路径。它存在,并从不同的项目源填充。我不想为每个出击都附上一个位置列表,因为这不符合内存效率。
如何点击与我的网格源不同的项目源。我已经考虑过创建静态和动态资源,但无法弄清楚如何在我从数据库中提取的600个位置的列表中填充和使用它们。
随意要求澄清。我很难解释这个问题。
非常感谢任何帮助。