栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在WPF中使用MVVM将n个矩形添加到画布

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在WPF中使用MVVM将n个矩形添加到画布

在适当的MVVM方法中,您将拥有一个视图模型,该模型带有矩形列表的抽象表示,例如:

public class RectItem{    public double X { get; set; }    public double Y { get; set; }    public double Width { get; set; }    public double Height { get; set; }}public class ViewModel{    public ObservableCollection<RectItem> RectItems { get; set; }}

然后,您将拥有一个使用ItemsControl可视化此类

Rect
项目的集合的视图。ItemsControl的将具有画布作为其
ItemsPanel
与一个适当的
ItemContainerStyle
ItemTemplate
其各自结合到相应的视图模型属性。它可能看起来像这样:

<ItemsControl ItemsSource="{Binding RectItems}">    <ItemsControl.ItemsPanel>        <ItemsPanelTemplate> <Canvas/>        </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.ItemTemplate>        <DataTemplate> <Rectangle Width="{Binding Width}" Height="{Binding Height}" Fill="Black"/>        </DataTemplate>    </ItemsControl.ItemTemplate></ItemsControl>

在样式设置器中没有绑定的替代方法(在UWP中不起作用)可能如下所示:

<ItemsControl ItemsSource="{Binding RectItems}">    <ItemsControl.ItemsPanel>        <ItemsPanelTemplate> <Canvas/>        </ItemsPanelTemplate>    </ItemsControl.ItemsPanel>    <ItemsControl.ItemTemplate>        <DataTemplate> <Rectangle Width="{Binding Width}" Height="{Binding Height}" Fill="Black">     <Rectangle.RenderTransform>         <TranslateTransform X="{Binding X}" Y="{Binding Y}"/>     </Rectangle.RenderTransform> </Rectangle>        </DataTemplate>    </ItemsControl.ItemTemplate></ItemsControl>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号