我发现我的XAML页面出现异常行为。 这是我的PageContent。我正在iOS模拟器中运行该应用。
SELECT asscfirstname, assclastname, trunc(addeddate), COUNT(*)
FROM CLUD.masterassc
GROUP BY asscfirstname, assclastname, trunc(addeddate)
having count (*) >1
order by count(*) desc;
我的主要内容位于上方的网格中。页面正在处理时,主网格应该不可见,繁忙的网格应该变成可见。
要知道,只有主要内容变为不可见,但是繁忙的网格也保持不可见。
这是我的绑定属性。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid IsVisible="{Binding IsBusy, Converter={StaticResource BooleanReverseVisibilityConverter}}">
<!-- Main content -->
</Grid>
<Grid IsVisible="{Binding IsBusy}">
<!-- Busy indicator -->
<Label Text="Doing some stuff..."/>
</Grid>
</Grid>
我确实在private bool _isBusy = false;
public bool IsBusy
{
get => _isBusy;
set
{
if (_isBusy == value) return;
_isBusy = value;
OnPropertyChanged();
}
}
中设置了IsBusy
变量(也尝试了普通的AsyncCommand
)。示例如下所示。
命令
Command
任务
CalculateCommand = new AsyncCommand(async () => await CalculateAction(), (t) =>
CalculateCommand_CanExcecute(t));
我想这与线程有关。我试图在主线程中调用private async Task CalculateAction()
{
IsBusy= true;
try
{
IncrementalNumber++;
//Do some calculation
await ShellNavigationManager.GoToAsync(string.Format("{0}?cid={1}", ShellRoute.CalculationResultPage.ToString(), culc.Id), false);
IsCalculating = false;
}
catch (Exception exc)
{
await Application.Current.MainPage.DisplayAlert(
Strings.DialogUnexpectedErrorOccurredHeadline,
string.Format(Strings.DialogUnexpectedErrorOccurredFormatedContent, exc.Message),
Strings.Close
);
IsBusy= false;
}
}
属性。
IsBusy
这似乎可行,但是这需要一段时间。计算几乎完成,直到调用将可视UI设置为当前状态。 我有点迷路了。 谢谢!
答案 0 :(得分:0)
尝试使用触发器。
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid IsVisible="false">
<Label Text="MainContent"/>
<Grid.Triggers>
<DataTrigger TargetType="Grid" Binding="{Binding Source={x:Reference IsBusyGrid}, Path=IsVisible}" Value="false">
<Setter Property="IsVisible" Value="True"/>
</DataTrigger>
</Grid.Triggers>
</Grid>
<Grid IsVisible="{Binding IsBusy}"
x:Name="IsBusyGrid">
<!-- Busy indicator -->
<Label Text="Doing some stuff..."/>
</Grid>
</Grid>
答案 1 :(得分:0)
我知道了。我似乎是Visual Studio中的错误。我只是剪切(ctrl + x)并再次粘贴了整个XAML代码。从那以后,它按预期工作。没有代码更改。.奇怪,但是很高兴它现在可以工作。
答案 2 :(得分:0)
就我而言,问题出在 bool _isBusy
属性中,缺少 {get; set;}
bool _isBusy // not working
bool _isBusy {get; set;} // solved