警报框未出现在xamarin表单中,DisplayAlert()

0 c# xaml xamarin xamarin.forms

我试图在点击或单击所选框后显示警告ListView框.目前selectedItem是绑定到SelectedTicket,它触发SelectedTicketViewModel中的对象调用.一旦SelectedTicket被触发,它随后执行popup.show()该方法DisplayAlert()的方法.该DisplayAlert()方法得到执行,但不显示AlertBox.

图片

==============================================

//// Xaml Page

<ListView ItemsSource="{Binding TicketList,Mode=OneWay}" RowHeight="130"
     ItemTemplate="{StaticResource TicketListTileTemplate}"  BackgroundColor="#d9deeb"
     SelectedItem="{Binding SelectedTicket, Mode=TwoWay}" SeparatorVisibility="None">
</ListView>
Run Code Online (Sandbox Code Playgroud)

==================================================

//// ViewModal

public object SelectedTicket
{
    get
    {
        return _SelectedTicket;
    }
    set
    {
        if (SetProperty(ref _SelectedTicket, value))
        {
            if ((value != null) && (value is TicketListItem))
            {
                popup1.Show();
                SelectedTicket = null;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

================================================== ====

////Popup.cs

async public void Show()
{
    DisplayAlert("Alert", "Your have been alerted", "OK");
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*ley 6

我没有看到DisplayAlert的最常见原因之一是因为它是在屏幕上不活动的页面上调用的.

作为快速解决方法/测试,您可以做到

await Application.Current.MainPage.DisplayAlert("Alert", "Your have been alerted", "OK");
Run Code Online (Sandbox Code Playgroud)

如果这有效,我的第一个假设就得到了证实.

我总是试图让我的代码保持干净,因此从ViewModel调用肯定是一个很好的方法.通常,您的MVVM库有一些代码可以帮助显示警报.