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