C# 若方法被调用,则将toggle Button设置为false,并隐藏我的代码

C# 若方法被调用,则将toggle Button设置为false,并隐藏我的代码,c#,wpf,xaml,togglebutton,C#,Wpf,Xaml,Togglebutton,如果从我的代码后面调用了一个方法,我尝试将切换按钮设置为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"

如果从我的代码后面调用了一个方法,我尝试将切换按钮设置为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>

首先,很难理解您从这段代码中执行了什么。您已经混合了两种方法。尝试使用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"/>

嗨,罗布,我喜欢使用切换按钮来启动一个方法。如果该方法已完成任务,则应将“pbStatus.isindestate”设置为“false”以停止动画。我试过你的
pbStatus.IsIndeterminate=true(和false)在StartScan_中单击并删除Xaml样式,但如果单击切换按钮,我仍然无法将它们设置为True或false。将所有代码归档在Xaml或Codebehind中会更好吗?这实际上是一个工作示例。我已经运行了这段代码,当我单击按钮时,按钮被禁用,进度开始并运行5秒钟,之后进度停止,按钮被启用并取消选中。这可能是因为我的progressBar位于dataTemplate内吗?如果我将条放在datatemplate之外,它就会工作。
<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;
}