Я пытаюсь установить ItemsSource в виде UWP ComboBox к свойству ViewModel, но я получаю сообщение об ошибке:Набор ItemsSource из UWP ComboBox в ViewModel собственности
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>
Соответствующий бит ViewModel выглядит следующим образом:
public class OrderPageViewModel
{
public ObservableCollection<Product> Products { get; set; } = new ObservableCollection<Product>();
public List<Component> componentsLookup = new List<Component>();
Edit 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