【问题标题】:Xamarin Forms Button IsVisible Binding not Working on AndroidXamarin 表单按钮 IsVisible 绑定在 Android 上不起作用
【发布时间】:2018-04-11 15:25:34
【问题描述】:

我尝试搜索相同的错误但没有结果,所以这是我的问题:

我有一个将部署在 Android 和 iOS 上的 Xamarin 表单项目。在我的一个观点中,我有 2 个按钮,只有在用户首先选择了几个选项时才可见。这在 iOS 上运行得很好,但是当我在 Android 模拟器上部署时,除非我切换方向,否则不会显示按钮。以下是代码示例:

<Button
    Grid.Column="0"
    Grid.Row="0"
    TextColor="{StaticResource AwesomeTxtColor}"
    Text="Click Me"
    BackgroundColor="{StaticResource AwesomeBgColor}"
    IsVisible="{Binding SelectedIndex, Converter={StaticResource isGreaterOrEqualZero}}"
    Command="{Binding AwesomeCommand}" />

同样,转换器也在每个调试会话和绑定中工作。这个问题只发生在我的 Android 上。 iOS 正在按预期工作。 Xamarin 表单版本:2.3.4.267。有没有人经历过这种情况或对可能出现的问题有任何想法?

【问题讨论】:

  • 可能是布局问题。当视图不适合容器时,android 会忽略该视图。此 Grid(即按钮容器)的宽度和高度定义设置为 Auto?
  • 嗯,有道理。我会在高度上回复你。我相信它是自动的。非常感谢。
  • 好的。如果它不起作用,请告诉我。
  • 好吧,所以它设置为“*”,我将其更改为 75 只是为了测试仍然相同的结果。除非我切换方向,否则不会显示按钮:/
  • 与“自动”的行为相同。没有出现按钮。

标签: android binding xamarin.forms converter


【解决方案1】:

原来是线程问题。用于在我的视图上填充选择器的列表是使用以下方式加载的:

await Task.Run(() => {
  //API calls to load lists
});

我把它改成了:

Device.BeginInvokeOnMainThread(() => {
  //API calls to load lists
});

现在 Android 更新了 UI。奇怪但显然列表中的那些值被卡在不同的线程上......

【讨论】:

    猜你喜欢
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2019-01-16
    相关资源
    最近更新 更多