Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单击按钮隐藏/取消隐藏XAML元素_C#_Xaml_Xamarin.forms_Show Hide_Activity Indicator - Fatal编程技术网

C# 单击按钮隐藏/取消隐藏XAML元素

C# 单击按钮隐藏/取消隐藏XAML元素,c#,xaml,xamarin.forms,show-hide,activity-indicator,C#,Xaml,Xamarin.forms,Show Hide,Activity Indicator,当我发出WebService请求时,我一直在尝试实现这个ActivityIndicator。我遇到了几种不同的解决方案,我正在尝试最简单的一种,如下所示: 嗯,这对我不起作用。在我看来,它似乎不接受我想要给变量的新值。当我通过代码将IsVisible变量设置为true时,我可以看到旋转的圆圈,但是,当我将变量设置为false并单击按钮时,什么也没有发生。此外,应该有一个“空”空间对应于不存在的元素 任何帮助都将不胜感激 非常感谢 LoginPage.xaml: LoginPage.xaml

当我发出
WebService
请求时,我一直在尝试实现这个
ActivityIndicator
。我遇到了几种不同的解决方案,我正在尝试最简单的一种,如下所示:

嗯,这对我不起作用。在我看来,它似乎不接受我想要给变量的新值。当我通过代码将
IsVisible
变量设置为true时,我可以看到旋转的圆圈,但是,当我将变量设置为false并单击按钮时,什么也没有发生。此外,应该有一个“空”空间对应于不存在的元素

任何帮助都将不胜感激

非常感谢

LoginPage.xaml:


LoginPage.xaml.cs:

void登录(对象发送方,事件参数e)
{
activityIndicator.IsVisible=true;
方法();
activityIndicator.IsVisible=false;
}

在评论的帮助下,我做了一些小改动,让它工作起来。我相信等待命令是我遗漏的细节之一。 但我不确定这是否是最好的解决方案。我很确定我应该用某种标志来做这件事,但我还是做不到

以下是两种解决方案:

1。通过将
IsVisible
属性设置为
FALSE
,可以隐藏
ActivityIndicator
,而不为元素保留任何空间

LoginPage.xaml:


LoginPage.xaml.cs:

异步无效登录(对象发送方,事件参数e)
{
activityIndicator.IsVisible=true;
等待任务。延迟(500);
方法();
activityIndicator.IsVisible=false;
}
2。通过将
IsRunning
属性设置为
FALSE
,可以隐藏
活动指示器
,并为元素保留空间

LoginPage.xaml:


LoginPage.xaml.cs:

异步无效登录(对象发送方,事件参数e)
{
activityIndicator.IsRunning=true;
等待任务。延迟(500);
方法();
activityIndicator.IsRunning=false;
}

根据
Method
正在执行的操作,它可能会阻塞UI线程,因此在
Method
完成之前,ActivityIndicator无法更新您无法尝试的方式执行此操作。在SignIn方法完成之前,显示屏不会重新布局。所以,如果你把它设为“假”,你将永远看不到任何东西。而且不会为它保留空白-阅读IsVisible的功能。寻找一些不同的活动指示器的工作示例。或者你在youtube上遗漏了一些小细节?(我没有看。)有没有提到使用async/await?或任务。运行?抱歉,我没有详细信息,但基本上你需要UI线程在“登录”运行时不被阻塞。另一种解决方案是操纵不透明度。@Rafael您的按钮在内容页外的情况如何?你能在SignIn方法中达到调试点吗?谢谢你的评论!总的来说,我已经能够调试了,当我按下buttons@ToolmakerSteve我认为阻止UI线程的方法是一个很好的猜测。。。我会查一下你提到的这些细节。谢谢使用
wait
时,该方法应声明为
async
async void sign(…
隐藏:不保留空格
。确切地说。这是
可见的定义行为。如果要保留空格,请将
不透明度
设置为0(不可见)或1(完全可见)。(删除
IsVisible
属性,或使用
IsVisible=“true”
)您还可以将
不透明度设置为分数,以使某些内容部分可见;例如
0.5
半可见,半透明。(如果不透明度
0
没有保留空间,请设置一个非常小的数字,如
0.001
——这在iOS上的某些情况下是必需的。)
行应位于
堆栈布局的内部。将其移动到
活动指示器
之后和
行之前的下一行。请测试此更改,如果有效,请编辑您的答案以显示更正的代码。我认为您可以根据设置属性
IsRunning
,而不是
IsVisible
就性能而言,最好使用不透明度。原因:不必每次显示/隐藏元素时都执行布局。ActivityIndicator不应该旋转-绑定到其
IsRunning
属性,实际上,您甚至可能不需要隐藏它。如果手动设置
IsRunning=False
,它是否只显示一个空白区域您可以随意操作!然后用您更改的值替换
“False”
,而不是对IsVisible执行此操作。