我为wrappanel创建了一个自定义控件。但它显示了额外的空间。 所以我试图创建HeightRequest的BindableProperty用于控制,并根据内容设置它以删除额外的空间。
这就是我如何创建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
我在这里做错了什么。请帮助。
提前谢谢。
答案 0 :(得分:2)
您的自定义控件应该已经有HeightRequest
属性。我假设您正在创建名为HeightText
的自定义可绑定属性。
如果是这样,我可以在代码中看到三个问题:
propertyName: "HeightRequest"
应为propertyName: "HeightText"
为确保我们不会获得目标媒体资源类型不匹配的例外,请将defaultValue: 100
更改为defaultValue: (double)100
使用HeightText
和GetValue
SetValue
媒体资源
public double HeightText
{
get
{
return (double)GetValue(HeightTextProperty);
}
set
{
SetValue(HeightTextProperty, value);
}
}
答案 1 :(得分:0)
请看下面的代码并试一试。希望,它会帮助你。
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;
}