小编pDE*_*DEV的帖子

UserControl作为ListBox中的DataTemplate

我希望在其他UserControls(如页面或窗口)中重用我的UserControls作为DataTemplates,在此示例中在ListBox中.一切都是MVVM.

我有一个名为"CardControl"的UserControl来显示一个简单的对象"Card".卡有两个属性,"ID"和"CardImage".控件DataContext是通过XAML设置的.如果我在VS或Blend中打开此UserControl,它会向我显示我在相应ViewModel中定义的虚拟卡.

现在我有另一个名为"CardSetControl"的UserControl,它应该显示一组卡片.因此,ViewModel有一个名为"Cards"的ObservableCollection <Card>类型的属性.

这是代码:

<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>
Run Code Online (Sandbox Code Playgroud)

在阅读了大量关于MVVM和DataContext/Binding的文章之后,我仍然没有让它发挥作用.整个层次化的USerControls/DataContexts事情是如何做到最好的干净方式的呢?

datacontext binding user-controls listbox mvvm

19
推荐指数
2
解决办法
2万
查看次数

标签 统计

binding ×1

datacontext ×1

listbox ×1

mvvm ×1

user-controls ×1