将切换按钮设置为false,如果调用方法则在我的代码后面

问题描述 投票:0回答:1

如果我从后面的代码中调用了一个方法,我会尝试将切换按钮设置为false。那是我的按钮的xaml:

<ToggleButton x:Name="StartScan" Grid.Column="1" Margin="20,0,0,0" Content="Start" IsChecked="False" Click="StartScan_Click" Width="80" />
<ProgressBar Name="pbStatus" Grid.Column="2" Height="22" Width="50" Minimum="0" Maximum="100">
    <ProgressBar.Style>
        <Style TargetType="ProgressBar">
            <Setter Property="IsIndeterminate" Value="False"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsChecked, ElementName=StartScan}" Value="True">
                    <Setter Property="IsIndeterminate" Value="True"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding IsChecked, ElementName=StartScan}" Value="false">
                    <Setter Property="IsIndeterminate" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ProgressBar.Style>
</ProgressBar>

[我做的是,如果我单击我的Toogle Button,那叫方法,那是可行的,但是运行我的方法后Toggle Button设置为IsChecked="False"真是太好了。

这就是我在后面的代码中使用Toogle Button调用的方法:

async void StartScan_Click(object sender, RoutedEventArgs e)
{
    await Task.Run(getAll);
    await Task.Delay(1000);
    await Task.Run(getGroups);
    await Task.Delay(1000);
    await Task.Run(GetUsers);

    //not working
    pbStatus.IsIndeterminate = false;
    StartScan.IsChecked = false; 
}
c# wpf xaml togglebutton
1个回答
0
投票

首先,很难理解您从这段代码中得到的结果。您已经混搭了两种方法。尝试抛弃XAML或代码,但不要尝试完全实现这两种方法,因为您一无所获且可读性差。]

如果您想在后面的代码中执行此操作,请摆脱XAML中的所有样式,并保持定义简单:

<ToggleButton x:Name="StartScan" Content="Start" IsChecked="False" Click="StartScan_Click" Width="80" />
<ProgressBar Name="pbStatus" Height="22" Width="80" Minimum="0" Maximum="100" IsIndeterminate="False"/>

在后面的代码中尝试立即将进度设置为不确定。之后,执行您的任务,然后将控件的状态设置为以前的状态。另外,我建议您在任务执行期间禁用该按钮,否则用户可以多次单击它。

private async void StartScan_Click(object sender, RoutedEventArgs e)
{
    pbStatus.IsIndeterminate = true;
    StartScan.IsEnabled = false;

    await Task.Delay(5000);

    pbStatus.IsIndeterminate = false;
    StartScan.IsEnabled = true;
    StartScan.IsChecked = false;
}
© www.soinside.com 2019 - 2024. All rights reserved.