如何将 ObsevableCollection 项目动态添加到我的窗口,以及什么是保存它们的合适容器

本文关键字:保存 什么 项目 ObsevableCollection 动态 添加 窗口 我的 | 更新日期: 2023-09-27 18:34:21

我需要将自定义类型的ObservableCollection中的项目添加到窗口中。我使用的是 MVVM,所以这个集合在我的 ViewModel 中。

我的收藏:

public ObservableCollection<Record> RecordsToDisplay { get; set; }

集合中的每条记录都有 X 和 Y 坐标(以及与情况无关的其他属性):

public int X { get; set; }
public int Y { get; set; }

如何考虑集合中的项的 X 和 Y 坐标,将它们添加到窗口中?

什么容器可以满足这种需求?

绑定将如何执行?

编辑:

从文件加载数据后,集合可能会更改,因此我需要容器来处理该事件。

如何将 ObsevableCollection 项目动态添加到我的窗口,以及什么是保存它们的合适容器

这是一种将 MVVM 方式中的点绑定到画布的方法。

  <ItemsControl  ItemsSource="{Binding RecordsToDisplay}" BorderBrush="Green" BorderThickness="1" Height="200" Width="200">
      <ItemsControl.ItemTemplate>
          <DataTemplate>
             <Ellipse Fill="Red" Height="5" Width="5"/> 
          </DataTemplate>
      </ItemsControl.ItemTemplate>
      <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas Background="Orange"/>
          </ItemsPanelTemplate>
      </ItemsControl.ItemsPanel>
        <ItemsControl.ItemContainerStyle>
            <Style TargetType="ContentPresenter">
                <Setter Property="Canvas.Left" Value="{Binding X}"/>
                <Setter Property="Canvas.Top" Value="{Binding Y}"/>
            </Style>
        </ItemsControl.ItemContainerStyle>
    </ItemsControl>
相关文章: