WPF中的GridView - 如何使用它?

 mobiledu2502910203 发布于 2023-02-06 19:47

我看了50个或更多关于这个控件的网页.在我看来,这对我来说可能毫无用处.

它接缝"GridView"是"ListView"控件的"视图".我在使用控件和加载数据时没有任何问题,但操纵它似乎很困难.

public partial class Designer : UserControl
{
    public Designer()
    {
        InitializeComponent();
        List NewItem = new List();
        NewItem.Add(new RandomData { Column1 = "Item1", Column2 = "MoreData", Column3 = "MoreData", Column4 = "MoreData" });
        ListView_1.ItemsSource = NewItem;
    }
}
public class RandomData
{
    public String Column1 { get; set; }
    public String Column2 { get; set; }
    public String Column3 { get; set; }
    public String Column4 { get; set; }
}

很简单,它将数据加载到列中.但是我想在那里加载其他东西.像复选框或图像文件或东西.

 public Designer()
        {
            InitializeComponent();
            CheckBox AttemptThis = new CheckBox();
            AttemptThis.Content = "Testing";
            AttemptThis.IsChecked = true;

            List NewItem = new List();
            NewItem.Add(new RandomData { Column1 = AttemptThis, Column2 = "MoreData", Column3 = "MoreData", Column4 = "MoreData" });
            ListView_1.ItemsSource = NewItem;
        }
    }
    public class RandomData
    {
        public CheckBox Column1 { get; set; }
        public String Column2 { get; set; }
        public String Column3 { get; set; }
        public String Column4 { get; set; }
    }

我得到checkbox.tostring()出现在列?

这个控制能够做到这一点吗?如果单元格是certian值,还有一种方法可以显示复选框或图像吗?

1 个回答
  • 如果你正在使用WPF,你真的需要忘记你可能习惯的任何和所有的概念和方法,如winforms,理解和拥抱WPF Mentality等古老的技术.

    操纵它似乎很难

    YES.WPF Visual Tree是一个非常复杂的结构,具有您真正不想进入的各种神秘行为.这就是为什么在编写WPF中的单行代码之前必须学习MVVM的原因

    我想在那里加载其他东西.像复选框或图像文件或东西.

    您不会将内容"加载"到UI中.您可以在XAML中定义 UI ,并使用DataBinding将UI绑定到相关数据,在a Data Model或a中定义ViewModel:

    <Window x:Class="WpfApplication7.Window1"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="Window1"  >
        <ListView ItemsSource="{Binding}">
            <ListView.View>
                <GridView>
                    <GridViewColumn>
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox IsChecked="{Binding IsSelected}"
                                          Content="{Binding DisplayName}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
    </Window>
    

    代码背后:

    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
    
            DataContext = Enumerable.Range(0,10)
                                    .Select(x => new DataItem()
                                    {
                                        DisplayName = "Item" + x.ToString(),
                                        IsSelected = x % 2 == 0
                                    });
        }
    }
    

    数据项:

    public class DataItem
    {
        public bool IsSelected { get; set; }
    
        public string DisplayName { get; set; }
    }
    

    结果:

    在此输入图像描述

    了解如何no need操作过程代码中的任何UI元素.您只需以简单属性的形式定义数据,然后将UI设置为DataContext.

    双向数据绑定还可以节省在修改后从UI中"读取值"的需要.在WPF中没有"从UI读取数据"这样的东西,因为DataBinding会处理这个问题.只需读取数据项中的数据即可.

    WPF Rocks.将我的代码复制并粘贴到一个File -> New Project -> WPF Application并自己查看结果.

    2023-02-06 19:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有