簡體   English   中英

如何在 C# 中創建 Grid.ColumnDefinition?

[英]How can I create a Grid.ColumnDefinition in C#?

這是我的代碼:

var column1 = new ColumnDefinition()
{
    Width = new GridLength(1, GridUnitType.Star)
};
var column2 = new ColumnDefinition()
{
    Width = new GridLength(30, GridUnitType.Absolute)
};

this.ColumnDefinitions.Add(column1);
this.ColumnDefinitions.Add(column2);

我試圖將第一個定義放在這樣的一行中,但它給了我一個錯誤:

this.ColumnDefinitions.Add(new ColumnDefinition(Width = new GridLength(1, GridUnitType.Star))

這是說 ColumnDefinition 不采用帶有一個參數的構造函數。

有誰不知道如何解決這個問題?

文檔清楚地表明ColumnDefinition只有一個空的構造函數

var col = new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) };
this.ColumnDefinitions.Add(col);

您正在混合構造函數和初始化程序的術語。 ColumnDefinition只有一個構造函數——默認的。 在另一種情況下,您可以從ColumnDefinition的初始化程序初始化Width屬性,就像您在第一行代碼中所做的那樣。 基本上,初始化程序調用默認 ctor,然后使用您提供的值填充其屬性。

在這種情況下,您可以做的是:

this.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });

您可以在此處閱讀有關 C# 中的初始化程序的更多信息。

我強烈推薦使用 Xamarin.Forms v4.6 中引入的C# Markup Extensions

這是我的應用程序 GitTrends 的一個示例: https://github.com/brminnick/GitTrends/blob/4045027a32b9eeadc3a10c5ed94df9199738cb2a/GitTrends/Views/ReferringSites/ReferringSitesDataTemplate.cs

using Xamarin.Forms;
using Xamarin.Forms.Markup;
using static Xamarin.Forms.Markup.GridRowsColumns;

class CardView : Grid
{
    public CardView()
    {
        RowSpacing = 0;
        RowDefinitions = Rows.Define(
            (Row.TopPadding, AbsoluteGridLength(TopPadding)),
            (Row.Card, Star),
            (Row.BottomPadding, AbsoluteGridLength(BottomPadding)));

        ColumnDefinitions = Columns.Define(
            (Column.LeftPadding, AbsoluteGridLength(16)),
            (Column.Card, Star),
            (Column.RightPadding, AbsoluteGridLength(16)));

        Children.Add(new CardViewFrame().Row(Row.Card).Column(Column.Card));
    }

    enum Row { TopPadding, Card, BottomPadding }
    enum Column { LeftPadding, Card, RightPadding }
}

https://github.com/brminnick/GitTrends/blob/4045027a32b9eeadc3a10c5ed94df9199738cb2a/GitTrends/Views/ReferringSites/ReferringSitesDataTemplate.cs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM