Xamarin.forms Xamarin布尔可绑定属性
我试图使可点击的图标,将用于愿望列表,为此我创建了布尔属性,将返回图像 这是我的代码,但它不支持onClick事件,请建议解决此问题Xamarin.forms Xamarin布尔可绑定属性,xamarin.forms,Xamarin.forms,我试图使可点击的图标,将用于愿望列表,为此我创建了布尔属性,将返回图像 这是我的代码,但它不支持onClick事件,请建议解决此问题 public class WishIconImg : Image, IDisposable { static FontImageSource unselected_source = new FontImageSource(); static FontImageSource selected_source = new F
public class WishIconImg : Image, IDisposable
{
static FontImageSource unselected_source = new FontImageSource();
static FontImageSource selected_source = new FontImageSource();
public WishIconImg()
{
unselected_source.FontFamily = "FA-S";
unselected_source.Glyph = "\U000f02d5";
unselected_source.Color = Color.DarkOrange;
selected_source.FontFamily = "FA-S";
selected_source.Glyph = "\U000f02d1";
selected_source.Color = Color.DarkOrange;
OnClick += Checkbox_OnClick;
}
public static BindableProperty IsCheckedProperty = BindableProperty.Create(
nameof(IsChecked), typeof(bool), typeof(WishIconImg), defaultBindingMode: BindingMode.TwoWay,
propertyChanged: IsCheckedChanged);
public bool IsChecked
{
get { return (bool)GetValue(IsCheckedProperty); }
set { SetValue(IsCheckedProperty, value); }
}
private static void IsCheckedChanged(BindableObject bindable, object oldValue, object newValue)
{
var cb = (WishIconImg)bindable;
if (cb == null)
return;
if ((bool)newValue)
{
cb.Source = selected_source;
}
else
{
cb.Source=unselected_source ;
}
}
void Checkbox_OnClick(object sender, EventArgs e)
{
IsChecked = !IsChecked;
}
public void Dispose()
{
OnClick -= Checkbox_OnClick;
}
}
}
Xaml
甚至我也尝试过使用Label属性,但它不起作用尝试为单击事件添加
TapGestureRecognizer
做这样的事
<StackLayout HeightRequest="35" WidthRequest="35" HorizontalOptions="End">
<controls:WishIconImg x:Name="HeartChk" IsChecked="{Binding AddWish, Mode=TwoWay}" />
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Checkbox_OnClick}" />
</StackLayout.GestureRecognizers>
</StackLayout>
单击视图时,您的方法将调用复选框
尝试为单击事件添加
TapGestureRecognitor
做这样的事
<StackLayout HeightRequest="35" WidthRequest="35" HorizontalOptions="End">
<controls:WishIconImg x:Name="HeartChk" IsChecked="{Binding AddWish, Mode=TwoWay}" />
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Checkbox_OnClick}" />
</StackLayout.GestureRecognizers>
</StackLayout>
单击视图时,您的方法将调用复选框
您可以像下面这样修改该类
public WishIconImg()
{
unselected_source.FontFamily = "FA-S";
unselected_source.Glyph = "\U000f02d5";
unselected_source.Color = Color.DarkOrange;
selected_source.FontFamily = "FA-S";
selected_source.Glyph = "\U000f02d1";
selected_source.Color = Color.DarkOrange;
var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
// handle the tap
IsChecked = !IsChecked;
};
this.GestureRecognizers.Add(tapGestureRecognizer);
}
您可以像下面这样修改该类
public WishIconImg()
{
unselected_source.FontFamily = "FA-S";
unselected_source.Glyph = "\U000f02d5";
unselected_source.Color = Color.DarkOrange;
selected_source.FontFamily = "FA-S";
selected_source.Glyph = "\U000f02d1";
selected_source.Color = Color.DarkOrange;
var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
// handle the tap
IsChecked = !IsChecked;
};
this.GestureRecognizers.Add(tapGestureRecognizer);
}
你也可以发布UI的xaml代码吗?我为您提供了一个更好的解决方案,我将使用更好的解决方案编辑您的UI如果您只想在添加xaml时添加OnClick事件,我只是在xaml中调用此控件,您也可以为UI发布xaml代码吗?我为您提供了一个更好的解决方案,我将使用更好的解决方案编辑您的UI如果您只想在添加了XAML的情况下添加OnClick事件,我只是在XAML中调用此控件您为他们导入了什么包?如果我按照您的示例更改代码,TapGestureRecognitzer命令=“{Binding Checkbox_OnClick}”/>将显示错误,我应该在控件中还是在ViewModel中创建复选框?在视图模型中,但如果您的问题已经解决,您可以出于将来的目的尝试…在任何布局上添加单击您为其导入的包?如果我按照您的示例更改代码,则TapGestureRecognizer命令=“{Binding Checkbox\u OnClick}”/>将显示错误,我应该在控件中还是在视图模型中创建复选框?在视图模型中,但是如果您的问题已经解决,您可以在将来尝试使用它…要添加任何布局,请单击“帮助”,问题现在就消失了。感谢一个非常好的编码。如果您需要处理ViewModel中的逻辑,还可以使用命令而不是事件。检查。谢谢你的帮助,问题已经解决了。感谢一个非常好的编码。如果您需要处理ViewModel中的逻辑,还可以使用命令而不是事件。检查。