在 xamarin.forms 中为我的自定义控件自定义 HeightRequest 的 BindableProperty
custom BindableProperty of HeightRequest for my custom control in xamarin.forms
我为 wrappanel.but 创建了一个自定义控件,它显示额外的 space。
所以我正在尝试为控件创建 HeightRequest 的 BindableProperty 并根据内容设置它以删除额外的 space.
这就是我创建 HeightRequest 的 BindableProperty 的方式
public double HeightRequest { get; set; }
private static BindableProperty heightTextProperty = BindableProperty.Create(
propertyName: "HeightRequest",
returnType: typeof(double),
declaringType: typeof(InstallationPhotoWrappanel),
defaultValue: 100,
defaultBindingMode: BindingMode.TwoWay,
propertyChanged: heightTextPropertyChanged);
private static void heightTextPropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
var control = (InstallationPhotoWrappanel)bindable;
control.HeightRequest = Convert.ToDouble(newValue);
}
但它给了我例外
exception has been thrown by the target of an invocation
我做错了什么here.please求助。
提前致谢。
请看下面的代码并尝试一下。希望对你有帮助。
代码
public static readonly BindableProperty HeightRequestProperty =
BindableProperty.Create<InstallationPhotoWrappanel,double>(i=>i.HeightRequest,100,BindingMode.TwoWay,heightTextPropertyChanged);
public double HeightRequest
{
get
{
return (double)GetValue(HeightRequestProperty);
}
set
{
SetValue(HeightRequestProperty, value);
}
}
static bool heightTextPropertyChanged(BindableObject bindable, double value)
{
var control = (InstallationPhotoWrappanel)bindable;
control.HeightRequest = value;
return true;
}
您的自定义控件应该已经有一个 HeightRequest
属性。我假设您正在创建名称为 HeightText
的自定义可绑定 属性。
如果是这样,我可以在代码中看到三个问题:
propertyName: "HeightRequest"
应该是 propertyName: "HeightText"
为确保我们不会获得目标 属性 类型不匹配异常,请将 defaultValue: 100
更改为 defaultValue: (double)100
并使用GetValue
和SetValue
添加HeightText
属性
public double HeightText
{
get
{
return (double)GetValue(HeightTextProperty);
}
set
{
SetValue(HeightTextProperty, value);
}
}
我为 wrappanel.but 创建了一个自定义控件,它显示额外的 space。 所以我正在尝试为控件创建 HeightRequest 的 BindableProperty 并根据内容设置它以删除额外的 space.
这就是我创建 HeightRequest 的 BindableProperty 的方式
public double HeightRequest { get; set; }
private static BindableProperty heightTextProperty = BindableProperty.Create(
propertyName: "HeightRequest",
returnType: typeof(double),
declaringType: typeof(InstallationPhotoWrappanel),
defaultValue: 100,
defaultBindingMode: BindingMode.TwoWay,
propertyChanged: heightTextPropertyChanged);
private static void heightTextPropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
var control = (InstallationPhotoWrappanel)bindable;
control.HeightRequest = Convert.ToDouble(newValue);
}
但它给了我例外
exception has been thrown by the target of an invocation
我做错了什么here.please求助。
提前致谢。
请看下面的代码并尝试一下。希望对你有帮助。
代码
public static readonly BindableProperty HeightRequestProperty =
BindableProperty.Create<InstallationPhotoWrappanel,double>(i=>i.HeightRequest,100,BindingMode.TwoWay,heightTextPropertyChanged);
public double HeightRequest
{
get
{
return (double)GetValue(HeightRequestProperty);
}
set
{
SetValue(HeightRequestProperty, value);
}
}
static bool heightTextPropertyChanged(BindableObject bindable, double value)
{
var control = (InstallationPhotoWrappanel)bindable;
control.HeightRequest = value;
return true;
}
您的自定义控件应该已经有一个 HeightRequest
属性。我假设您正在创建名称为 HeightText
的自定义可绑定 属性。
如果是这样,我可以在代码中看到三个问题:
propertyName: "HeightRequest"
应该是propertyName: "HeightText"
为确保我们不会获得目标 属性 类型不匹配异常,请将
defaultValue: 100
更改为defaultValue: (double)100
并使用
添加GetValue
和SetValue
HeightText
属性public double HeightText { get { return (double)GetValue(HeightTextProperty); } set { SetValue(HeightTextProperty, value); } }