我有一個在許多 ContentPages 中被呼叫的通用 ContentView。不同的頁面有不同的要求,根據要求,我想改變 ColumnDefinition 的寬度屬性。
例如:
在一頁上,Grid 視圖內有三個控制元件,寬度分別為“ ,1, ”
<Grid ColumnDefinitions="*,1,*">
但在其他頁面上,我想關閉前兩個控制元件的可見性,這就是為什么我想為前兩個控制元件分配一個寬度給 Auto。
<Grid ColumnDefinitions="Auto,Auto,*">
為了實作這個功能,我創建了可系結屬性。
public static readonly BindableProperty GridColumnDefinitionProperty =
BindableProperty.Create(nameof(GridColumnDefinition), typeof(ColumnDefinitionCollection), typeof(PopupView), "*,1,*");
public ColumnDefinitionCollection GridColumnDefinition
{
get => (ColumnDefinitionCollection)GetValue(GridColumnDefinitionProperty);
set => SetValue(GridColumnDefinitionProperty, value);
}
但我收到了這個錯誤
System.ArgumentException: '默認值與回傳型別不匹配。屬性:Xamarin.Forms.ColumnDefinitionCollection PopupView.GridColumnDefinition 默認值型別:字串,引數名稱:defaultValue'
我在 Bindable 屬性行收到此錯誤。
uj5u.com熱心網友回復:
對于簡單的情況,另一種方法是在后面的代碼中創建所需的 ColumnDefinitions。使用bool
屬性控制何時這樣做。
<Grid x:Name="theGrid" ... />
public static readonly BindableProperty UseAutoColumnsProperty =
BindableProperty.Create(nameof(UseAutoColumns), typeof(bool), typeof(ContentPage), false);
public bool UseAutoColumns
{
get => (bool)GetValue(UseAutoColumnsProperty);
set
{
SetValue(UseAutoColumnsProperty, value);
if (value)
theGrid.ColumnDefinitions = new ColumnDefinitionCollection
{
new ColumnDefinition(GridLength.Auto),
new ColumnDefinition(GridLength.Auto),
new ColumnDefinition(GridLength.Star),
};
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506340.html
標籤:C# xml xamarin xamarin.forms