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

创建列表视图时将形状信息添加到列表视图

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

创建列表视图时将形状信息添加到列表视图

在适当的MVVM方法中,您应该具有一个带有Shape的抽象表示的视图模型(而不是UI元素列表),例如:

public class ShapeData{    public string Type { get; set; }    public Geometry Geometry { get; set; }    public Brush Fill { get; set; }    public Brush Stroke { get; set; }    public double StrokeThickness { get; set; }}public class ViewModel{    public ObservableCollection<ShapeData> Shapes { get; }        = new ObservableCollection<ShapeData>();}

您现在可以将此视图模型绑定到如下所示的视图。从形状对象的

Bounds
属性中检索每个形状的位置和大小
Geometry

<Grid>    <Grid.ColumnDefinitions>        <ColumnDefinition/>        <ColumnDefinition/>    </Grid.ColumnDefinitions>    <ItemsControl ItemsSource="{Binding Shapes}">        <ItemsControl.ItemsPanel> <ItemsPanelTemplate>     <Canvas/> </ItemsPanelTemplate>        </ItemsControl.ItemsPanel>        <ItemsControl.ItemTemplate> <DataTemplate>     <Path Data="{Binding Geometry}"Fill="{Binding Fill}"Stroke="{Binding Stroke}"StrokeThickness="{Binding StrokeThickness}"/> </DataTemplate>        </ItemsControl.ItemTemplate>    </ItemsControl>    <ListView Grid.Column="1" ItemsSource="{Binding Shapes}">        <ListView.View> <GridView>     <GridViewColumn Header="Type"          DisplayMemberBinding="{Binding Type}"/>     <GridViewColumn Header="X"          DisplayMemberBinding="{Binding Geometry.Bounds.X}"/>     <GridViewColumn Header="Y"          DisplayMemberBinding="{Binding Geometry.Bounds.Y}"/>     <GridViewColumn Header="Width"DisplayMemberBinding="{Binding Geometry.Bounds.Width}"/>     <GridViewColumn Header="Height"          DisplayMemberBinding="{Binding Geometry.Bounds.Height}"/> </GridView>        </ListView.View>    </ListView></Grid>

您可以在窗口的构造函数中创建一个视图模型实例,并添加一些示例数据,如下所示:

public MainWindow(){    InitializeComponent();    var viewModel = new ViewModel();    viewModel.Shapes.Add(new ShapeData    {        Type = "Circle",        Geometry = new EllipseGeometry(new Point(100, 100), 50, 50),        Fill = Brushes.Orange,        Stroke = Brushes.Navy,        StrokeThickness = 2    });    viewModel.Shapes.Add(new ShapeData    {        Type = "Rectangle",        Geometry = new RectangleGeometry(new Rect(200, 50, 50, 100)),        Fill = Brushes.Yellow,        Stroke = Brushes.DarkGreen,        StrokeThickness = 2    });    DataContext = viewModel;}


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

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

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