Я хочу повторно использовать свои UserControls в других UserControls, таких как страница или окно, как DataTemplates, в этом примере внутри ListBox.Все это MVVM.
У меня есть UserControl под названием "CardControl" для отображения простого объекта "Card".Карта имеет два свойства: «ID» и «CardImage».Элементы управления DataContext устанавливаются через XAML.Если я открываю этот UserControl в VS или Blend, он показывает мне фиктивную карту, которую я определил в соответствующей ViewModel.
Теперь у меня есть другой UserControl, называемый "CardSetControl", который должен отображать коллекцию карт.Таким образом, у ViewModel есть одно свойство типа ObservableCollection , называемое «Cards».
Вот код:
<ListBox x:Name="MyList" ItemsSource="{Binding CardSet.Cards}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<!-- WORKING, but not what i want -->
<TextBlock Text="{Binding ID}" /> // would display ID of Card
<Image Source="{Binding Image}" /> // would display Image of Card
<!-- NOT WORKING, but this is how i want it to work -->
<UserControls:CardControl DataContext="{Binding "Current listbox item as DataContext of CardControl???"}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
После прочтения множества статей о MVVM и DataContext / Binding я до сих порне заставить его работать.Как все это иерархическое действие USerControls / DataContexts сделано наилучшим образом?