【发布时间】:2020-08-30 02:57:19
【问题描述】:
我有一个布尔属性,我想将其否定值(!值)绑定到一个按钮,但是每次我在 xaml 标记中配置转换器时,它都会毫无例外地终止应用程序,我在应用程序中心没有发现任何错误.如果我删除这部分 , Converter={StaticResource inverter}} 一切都会恢复,但没有转换。
我的xml:
<ContentPage.Resources>
<local:BooleanConverter x:Key="inverter" />
...
<ContentPage.Resources>
...
<controls:FrameButton IsEnabled="{Binding IsBusy, Converter={StaticResource inverter}}" Margin="5" CornerRadius="5">
还有我的 BooleanConverter.cs:
using System;
using Xamarin.Forms;
public class BooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return !System.Convert.ToBoolean(value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return !System.Convert.ToBoolean(value);
}
}
更新 1
框架按钮代码:
using Xamarin.Forms;
namespace CustomControls.Controls
{
public class FrameButton : Frame
{
public FrameButton()
{
var MyTapGesture = new TapGestureRecognizer();
MyTapGesture.Tapped += (sender, e) => { Clicked(); };
GestureRecognizers.Add(MyTapGesture);
}
public async void Clicked()
{
await this.ScaleTo(1.1, 100);
await this.ScaleTo(1, 100);
}
}
}
【问题讨论】:
-
尝试添加 try/catch,和/或使用调试器单步执行代码并跟踪错误
-
我使用您提供的代码进行测试,以设置按钮的布尔值。它运作良好。我们需要更多信息来重现。你能为此提供
FrameButton吗?您是否尝试卸载并重新安装该应用程序或在其他设备上进行测试?应用程序是否再次崩溃? -
@Jason 已尝试 Convert(..){ try{} catch{} } 但没有输出任何内容
-
@WendyZang-MSFT 是的,我尝试在两个不同的设备中清理解决方案、重建和测试。我现在会用 FrameButton 更新我的问题
-
@ÉderRochaBezerra 我制作了代码示例以使用 FrameButton 进行测试。它运作良好。你可以从 GitHub 下载查看。 github.com/WendyZang/Test/tree/master/Converters/inverterDemo
标签: c# xamarin binding converters