0
我想一个UWP ComboBox的的ItemsSource设置为视图模型的属性,但我得到一个错误:UWP组合框的设置的ItemsSource到视图模型属性
Error: BindingExpression path error: 'componentsLookup' property not found on 'Orders.Component'
XAML的相关位看起来像这样:
<Page.DataContext>
<local:OrderPageViewModel x:Name="OrderPageViewModel" />
</Page.DataContext>
<ListView
Name="ComponentsList"
ItemsSource="{Binding Components}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ComboBox
ItemsSource="{Binding componentsLookup,Mode=TwoWay}"
DisplayMemberPath="ComponentCode"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
视图模型的相关位看起来是这样的:
public class OrderPageViewModel
{
public ObservableCollection<Product> Products { get; set; } = new ObservableCollection<Product>();
public List<Component> componentsLookup = new List<Component>();
编辑1:的模型看起来像这样
public class Product
{
public string ProductCode { get; set; }
public string ProductDescription { get; set; }
public List<Component> Components { get; set; }
public override string ToString()
{
return this.ProductCode;
}
}
public class Component
{
public Guid ComponentId { get; set; }
public Product Product { get; set; }
public string ComponentCode { get; set; }
public string ComponentDescription { get; set; }
public string ComponentColor { get; set; }
public decimal ComponentHeight { get; set; }
public decimal ComponentWidth { get; set; }
public override string ToString()
{
return this.ComponentCode;
}
}
我如何设置的ItemsSource到componentsLookup
谢谢你的建议@Sunteen - MSFT,但这个解决方案并不完全解决商业案例。每种产品都由一系列组件组成。这个组件列表是所有组件完整列表的子集。所有组件的完整列表'componentsLookup'不是'Product'的属性。作为另一个例子,在另一个控件中,我们想要给组件分配一个颜色。所有颜色的列表不能也是'Product'的属性。我们需要一种方法来将一个ItemSource分配给一个ComboBox,而不需要将这个ItemsSource作为该模型的一个属性。这是一个常见的商业案例。 – Vague
@Vague你能否提供你的实体(产品和组件类)?你不想要嵌套的源代码但嵌套的绑定?你应该将'ComboBox'嵌套在ListView中吗? –
我已添加模特@Sunteen - MSFT。我们正试图证明UWP是否适用于LOB应用程序。代码是为这个练习生成的。实际模型属于另一个团队,我们可能无法对其进行更改。我们需要能够通过ViewModels提供他们需要的视图。 – Vague