小编Win*_*ter的帖子

WPF Canvas Children 可以绑定 ObservableCollection 包含不同形状和 TextBlock 的 ViewModel 吗?

我正在尝试创建一个 WPF 画布控件,它可以绘制形状、曲线和文本块,选择和删除它们,因此我能想到的最好方法是使用 MVVM 将视图模型列表与 Canvas Children 绑定。

但是,Canvas Children 不能直接绑定。所以我有点卡住了。浏览过互联网但没有找到直接答案。我发现有人建议使用以下方法来实现绑定 Canvas Children,但我无法理解 ViewModels“Nodes”是什么类型,以及如何将不同的 Shapes、Curves 和 TextBlocks 转换为 Nodes。

任何帮助将不胜感激。提前致谢。

<ItemsControl ItemsSource="{Binding Path=Nodes}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="Canvas.Left" Value="{Binding Path=XPos}" />
            <Setter Property="Canvas.Top" Value="{Binding Path=YPos}" />
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf canvas mvvm

4
推荐指数
1
解决办法
2890
查看次数

标签 统计

c# ×1

canvas ×1

data-binding ×1

mvvm ×1

wpf ×1