加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用C#在UWP中创建ItemsWrapGrid?

发布时间:2020-12-15 22:19:00 所属栏目:百科 来源:网络整理
导读:问题:如何在C#中使用ItemsWrapGrid布局制作网格? 上下文 UWP Visual Studio 2015 Windows 10 C# 背景 我知道如何在XAML中制作它.在Visual Studio 2015中创建新的UWP应用程序后,XAML是: Page x:Class="WrapGridTest001.MainPage" xmlns="http://schemas.mi
问题:如何在C#中使用ItemsWrapGrid布局制作网格?

上下文

> UWP
> Visual Studio 2015
> Windows 10
> C#

背景

我知道如何在XAML中制作它.在Visual Studio 2015中创建新的UWP应用程序后,XAML是:

<Page
    x:Class="WrapGridTest001.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:WrapGridTest001"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    MinWidth="10"
    MinHeight="10"
    >

    <Grid x:Name="thisGrid">
        <GridView x:Name="thisGridView" IsItemClickEnabled="True">
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <ItemsWrapGrid
                            x:Name="thisItemsWrapGrid"
                            Orientation="Horizontal"
                            MaximumRowsOrColumns="5"
                        />
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
            <TextBlock Text="#1"/>
            <TextBlock Text="#2"/>
            <TextBlock Text="#3"/>
        </GridView>
    </Grid>
</Page>

为了以编程方式进行编程,我已将其从XAML中取出:

<Page
    x:Class="WrapGridTest001.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:WrapGridTest001"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    MinWidth="10"
    MinHeight="10"
    >
</Page>

并尝试在Page的构造函数中重现它:

public MainPage()
{
    this.InitializeComponent();

    // Make the Grid and set it to be the Page's .Content:
    Grid grid = new Grid();
    this.Content = grid;

    // Make the GridView for the Grid,then set it:
    GridView gridView = new GridView();
    grid.Children.Add(gridView);

    // Make the ItemsPanelTemplate; necessary?
    ItemsPanelTemplate itemsPanelTemplate = new ItemsPanelTemplate();
    gridView.ItemsPanel = itemsPanelTemplate;

    // Make the ItemsWrapGrid.  Can't figure out how to set this.
    ItemsWrapGrid itemsWrapGrid = new ItemsWrapGrid();
    // When I traced the XAML version,its ItemsWrapGrid was apparently under
    //      gridView.ItemsPanelRoot
    //,but that's a get-only property.  I can't find a place to set it.

    // Add the TextBlock's with "#1","#2",and "#3":
    for (int i = 1; i <= 3; ++i)
    {
        TextBlock textBlock = new TextBlock();
        textBlock.Text = "#" + i.ToString();
        gridView.Items.Add(textBlock);
    }

    // All done.  However,this Grid will show contents with a vertical alignment
    // rather than a horizontal one.
}

我需要添加哪些附加代码来在C#中设置ItemsWrapGrid,因为它是在XAML中设置的?目前C#代码创建了ItemsWrapGrid,但ItemsWrapGrid实际上并未在任何地方设置,因为到目前为止每次尝试使用它都会导致某种类型的错误.

解决方法

你需要的是XamlReader

string template =
                "<ItemsPanelTemplate xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><ItemsWrapGrid VerticalAlignment = "Top" "
                + " ItemWidth = ""
                + itemWidth
                + "" Orientation = "Horizontal"/></ItemsPanelTemplate> ";
yourgridview.ItemsPanel = (ItemsPanelTemplate)XamlReader.Load(template);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读