带有项目控件的视图模型的Caliburn.Micro绑定列表

培根

我有一个视图模型,其中包含另一个视图模型的集合。我想用视图模型的集合作为ItemsSource一个ItemsControl显示相应的视图。我收到此错误:items collection must be empty before using itemssource每次CurrentArea更改我都想创建新的视图模型。

父视图模型

public class AreaDetailViewModel : Screen
{
    public AreaDetailViewModel()
    {
        CurrentAreaWeapons = new ObservableCollection<WeaponDetailViewModel>();
        DisplayName = "Area Details";

        using (var repo = new AreaDetailRepository())
            Areas = repo.GetAreas();
    }

    public List<Area> Areas;
    public Area CurrentArea
    {
        get { return _currentArea; }
        set
        {
            _currentArea = value;
            DisplayName = _currentArea.Name;
            NotifyOfPropertyChange(() => CurrentArea);
            SetWeaponDetailViewModels();
        }
    }

    private Area _currentArea;

    private void SetWeaponDetailViewModels()
    {
        CurrentAreaWeapons.Clear();
        foreach (var item in _currentArea.Weapons)
            CurrentAreaWeapons.Add(new WeaponDetailViewModel(item));
    }
}

父视图

<UserControl x:Class="Fallout4Checklist.Views.AreaDetailView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:cal="http://www.caliburnproject.org">

    <ScrollViewer>
        <StackPanel>
            <Border Style="{StaticResource WeaponContainer}">
                <StackPanel>
                    <Label Style="{StaticResource WeaponHeader}" />
                    <ItemsControl ItemsSource="{Binding CurrentAreaWeapons}">
                        <ContentControl cal:View.Model="{Binding /}" />
                    </ItemsControl>
                </StackPanel>
            </Border>
        </StackPanel>
    </ScrollViewer>
</UserControl>

查看用于集合的模型

public class WeaponDetailViewModel : PropertyChangedBase
{
    // NOTHING SPECIAL HERE
}

对应于查看集合中使用的模型的视图

<UserControl x:Class="Fallout4Checklist.Views.Partial.WeaponDetail"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Fallout4Checklist.Views.Partial">

    <StackPanel>
        <Border Style="{StaticResource WeaponDetailNameBorder}">
            <Label Style="{StaticResource WeaponDetailName}" />
        </Border>
        <StackPanel Style="{StaticResource WeaponDetailContainer}">
            <Border Style="{StaticResource ImageBorder}">
                <Image Source="{Binding ImagePath.FullPath}" />
            </Border>
            <Border Style="{StaticResource ItemDescriptionBorder}">
                <TextBlock Style="{StaticResource ItemDescription}" Text="{Binding Characteristics}" />
            </Border>
        </StackPanel>
    </StackPanel>
</UserControl>
TYY

首先,您应该阅读codeplex上的文档(https://caliburnmicro.codeplex.com/wikipage?title=All%20About%20Conventions)。

但是,副手我认为您的itemcontrol的内部元素声明是错误的。

换句话说,删除

<ContentControl cal:View.Model="{Binding /}" />

并为ItemsControl中的项目创建一个itemstemplate

<DataTemplate>
    <ContentControl cal:View.Model="{Binding}" />
</DataTemplate>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用带有Ninject和WPF的Caliburn.Micro在视图模型之间绑定/传递数据

来自分类Dev

如何使用Caliburn.Micro将容器绑定到MVVM标准中的列表视图控件?

来自分类Dev

Caliburn Micro Datagrid绑定

来自分类Dev

Caliburn.Micro ItemsSource不是绑定到当前视图模型,而是绑定到父视图模型

来自分类Dev

带有 Caliburn.Micro 绑定的 UWP 模板控制,如何?

来自分类Dev

Caliburn.micro“有时”绑定BindableCollection项目

来自分类Dev

使用Caliburn.Micro在嵌套列表框中绑定SelectedItem

来自分类Dev

将多个Caliburn.Micro视图模型绑定到同一视图的不同实例

来自分类Dev

Caliburn Micro,动态加载的视图/视图模型

来自分类Dev

Caliburn Micro自替换视图/视图模型

来自分类Dev

如何在 MVVM Caliburn.Micro 中绑定用户控件?

来自分类Dev

WPF-Caliburn Micro Event触发器,带有控件作为参数

来自分类Dev

WPF-Caliburn Micro Event触发器,带有控件作为参数

来自分类Dev

使用caliburn micro的组合框绑定错误

来自分类Dev

ComboBox 中的 Caliburn.Micro Enum 绑定

来自分类Dev

带有项目列表的Django模型

来自分类Dev

如何将剃刀视图绑定到带有对象列表的模型?

来自分类Dev

Caliburn Micro事件在视图/视图模型关闭时

来自分类Dev

带有Caliburn.Micro的ModalContentPresenter

来自分类Dev

WPF控件(绑定到视图模型上的列表的属性)想要在Xaml中定义列表

来自分类Dev

Caliburn Micro->从多个视图/用户控件/自定义控件组成视图

来自分类Dev

Caliburn Micro->从多个视图/用户控件/自定义控件组成视图

来自分类Dev

使用Caliburn Micro从视图模型中的属性名称获取控制

来自分类Dev

使用Caliburn.Micro的视图模型中的气泡事件

来自分类Dev

在列表框中绑定项目控件

来自分类Dev

如何将列表视图从视图模型绑定模型可观察集合更新到项目源

来自分类Dev

模型绑定angularjs列表

来自分类Dev

绑定到其他控件的视图模型

来自分类Dev

使用Caliburn.Micro将图像绑定到Uri

Related 相关文章

  1. 1

    使用带有Ninject和WPF的Caliburn.Micro在视图模型之间绑定/传递数据

  2. 2

    如何使用Caliburn.Micro将容器绑定到MVVM标准中的列表视图控件?

  3. 3

    Caliburn Micro Datagrid绑定

  4. 4

    Caliburn.Micro ItemsSource不是绑定到当前视图模型,而是绑定到父视图模型

  5. 5

    带有 Caliburn.Micro 绑定的 UWP 模板控制,如何?

  6. 6

    Caliburn.micro“有时”绑定BindableCollection项目

  7. 7

    使用Caliburn.Micro在嵌套列表框中绑定SelectedItem

  8. 8

    将多个Caliburn.Micro视图模型绑定到同一视图的不同实例

  9. 9

    Caliburn Micro,动态加载的视图/视图模型

  10. 10

    Caliburn Micro自替换视图/视图模型

  11. 11

    如何在 MVVM Caliburn.Micro 中绑定用户控件?

  12. 12

    WPF-Caliburn Micro Event触发器,带有控件作为参数

  13. 13

    WPF-Caliburn Micro Event触发器,带有控件作为参数

  14. 14

    使用caliburn micro的组合框绑定错误

  15. 15

    ComboBox 中的 Caliburn.Micro Enum 绑定

  16. 16

    带有项目列表的Django模型

  17. 17

    如何将剃刀视图绑定到带有对象列表的模型?

  18. 18

    Caliburn Micro事件在视图/视图模型关闭时

  19. 19

    带有Caliburn.Micro的ModalContentPresenter

  20. 20

    WPF控件(绑定到视图模型上的列表的属性)想要在Xaml中定义列表

  21. 21

    Caliburn Micro->从多个视图/用户控件/自定义控件组成视图

  22. 22

    Caliburn Micro->从多个视图/用户控件/自定义控件组成视图

  23. 23

    使用Caliburn Micro从视图模型中的属性名称获取控制

  24. 24

    使用Caliburn.Micro的视图模型中的气泡事件

  25. 25

    在列表框中绑定项目控件

  26. 26

    如何将列表视图从视图模型绑定模型可观察集合更新到项目源

  27. 27

    模型绑定angularjs列表

  28. 28

    绑定到其他控件的视图模型

  29. 29

    使用Caliburn.Micro将图像绑定到Uri

热门标签

归档