希望这将是一个简单的。我忽略了一些东西。
我正在尝试从Linq查询中填充Store App中的组合框。这不是双向关系。为了报告目的,CB的值将用于更改其他显示元素 - 它是只读的。
Linq返回一个iEnumerable列表。我将此分配给C#
中CB的.DataContextpublic MyClass
{
public string Area;
}
this.AreaList.DataContext = QueryData;
this.AreaList.SelectedIndex = 0;
我知道数据已被“附加”,因为我可以通过编程方式获取它:
MyClass item = (MyClass)this.AreaList.SelectedItem;
MyOtherClass.Area = item.Area;
这个问题是CB显示了正确的值数,但它们都是空白的。我尝试了很多XAML组合,但没有提供屏幕上的任何内容。
当前的非工作XAML是:
<ComboBox x:Name="AreaList" ItemsSource="{Binding}" DisplayMemberPath="Area" SelectedValuePath="Area" HorizontalAlignment="Left" VerticalAlignment="Top" />
非常感谢任何帮助我在CB中显示我的Area属性。
干杯,
罗伊
答案 0 :(得分:0)
我正在考虑QueryData
是List<MyClass>
,如果您想将Area
与ComboBox
绑定,List<T>
应该是属性而不是字段(变量)。我建议您使用List<string>
,然后无需使用DisplayMemberPath
&amp; SelectedValuePath
。所以你只需删除DisplayMemberPath
&amp; SelectedValuePath
如果您选择List<string>
然后使用
MyOtherClass.Area = AreaList.SelectedItem.ToString();
答案 1 :(得分:0)
使用
this.AreaList.ItemsSource = QueryData;
而不是
this.AreaList.DataContext = QueryData;
答案 2 :(得分:0)
所以我的问题是让自定义对象填充组合框。我尝试使用XAML属性的每个组合来尝试使用IEnumerable&lt;&gt;由Linq回来。
经过深思熟虑,最简单的解决方案是采用IEnumerable&lt;&gt;并简单地将我想要的属性提取到List。
最终结果是使用.Select()方法。
public List<string> Filter()
{
var data = from c in this.Source.XDoc.Descendants("R")
group c by c.Element("C0").Value into d
select new { d.Key };
return data.Select(area => area.Key).ToList();
}
现在看来很明显。
干杯,
罗伊