Я создал простой MVVM-проект wpf.Основная идея состоит в том, чтобы отобразить данные о годовом доходе клиента и ссудах, которые он имеет в различных банках.
Модель состоит из 2 классов: Financial и FinancialLoans.ViewModel состоит из 2 классов FinancialVM и FinancialLoanVM
Ниже приведены классы виртуальных машин:
namespace WpfTester.ViewModel{
public class FinancialVM
{
public Model.Financial Financial { get; set; }
public ObservableCollection<ViewModel.FinancialLoanVM> FinancialLoanVMs { get; set; }
public FinancialVM()
{
//Fill the models with some sample data
Financial = new WpfTester.Model.Financial { Income = 1950.12 };
Financial.FinancialLoans = new ObservableCollection<Model.FinancialLoan>();
Financial.FinancialLoans.Add(new WpfTester.Model.FinancialLoan { Bank = new Random().Next().ToString() });
Financial.FinancialLoans.Add(new WpfTester.Model.FinancialLoan { Bank = new Random().Next().ToString() });
FinancialLoanVMs = new ObservableCollection<FinancialLoanVM>();
foreach (Model.FinancialLoan financialLoan in Financial.FinancialLoans)
{
FinancialLoanVMs.Add(new ViewModel.FinancialLoanVM { FinancialLoan = financialLoan });
}
} }
public class FinancialLoanVM
{
public Model.FinancialLoan FinancialLoan { get; set; }
public FinancialLoanVM()
{ FinancialLoan = new Model.FinancialLoan(); }
}
}
В пользовательском интерфейсе есть элемент управления финансовыми пользователями, текст которого связан сFinancialVM и пользовательский элемент управления FinancialLoan с текстом данных, привязанным к FinancialLoanVM.
Проблема, с которой сталкиваются, связана со списком.Я настроил его на использование пользовательских элементов управления FinancialLoans в качестве элементов, но связанные данные не вставляются в объект FinancialLoanUC DataContext.Я предполагаю, что уловка - все в части таблицы данных listboxitem.Любые идеи о том, как я могу сделать эту работу?
<UserControl.DataContext>
<ViewModel:FinancialVM/>
</UserControl.DataContext>
<Grid d:DataContext="{d:DesignInstance Type=ViewModel:FinancialVM}" >
<Grid.RowDefinitions>
<RowDefinition Height="23"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<TextBlock Text="Income= "/>
<Label Content="{Binding Path=Financial.Income}"/>
</StackPanel>
<ListBox Grid.Row="1" ItemsSource="{Binding Path=FinancialLoanVMs}">
<ListBox.ItemTemplate>
<DataTemplate>
<View:FinancialLoanUC DataContext="{Binding }" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>