1

私のWPFアプリには、ユーザーがボタンをクリックしたときにアクティブになる特定の時間のかかるアクションがあります。私がやりたいのは、プロセスがバックグラウンドで進行していることを示すために、ユーザーに待機カーソルのようなモーダルボックスを表示することです。これを達成するには、どのような種類のコントロールが必要ですか?

4

2 に答える 2

1

ここではあまり見ていません。アプリケーションをどのように設計したかはわかりませんが、私自身のために、クラスNavPageを拡張し、型とイベントUserControlのプロパティを持つクラスを作成しました。ModalNavPageClose

つまり、基本的に私NavPageのコントロールでは、他のコントロールをその中のモーダルとしてホストできますNavPag。Close関数は、ページを閉じるだけです。

NavPageテンプレートがコントロールを探す方法は次のとおりです。

<ControlTemplate x:Key="Fx_NavPage_ControlTemplate" TargetType="{x:Type fx:NavPage}">
    <Grid>
        <Border x:Name="TheContainer" CornerRadius="{TemplateBinding CornerRadius}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
            <ContentControl Content="{TemplateBinding Content}" />
        </Border>
        <Border x:Name="TheCover" CornerRadius="{TemplateBinding CornerRadius}" Background="#20000000" Visibility="Collapsed" />
        <ContentControl x:Name="TheModal" Content="{TemplateBinding Modal}" Visibility="Collapsed" />
    </Grid>
    <ControlTemplate.Triggers>
        <DataTrigger Binding="{Binding Modal, RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource IsNullConverter}}" Value="False">
            <Setter TargetName="TheCover" Property="Visibility" Value="Visible" />
            <Setter TargetName="TheModal" Property="Visibility" Value="Visible" />
        </DataTrigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

だから基本的に私はただ、と別のGridを持っています。次に、のプロパティの値をチェックするaがあり、null以外の場合は、TheCoverとTheModalの可視性をvisibleに変更します。カバーは、ユーザーがメインのNavPageのコントロールをクリックするのを防ぐ半透明のボーダーコントロールです。ContentControl (TheContainer)Border (TheCover)ContentControl (TheModal)DataTriggerModalNavPage

これがお役に立てば幸いです。または、上記の誰かが提案したBusyIndi​​catorを使用するだけでよいのですが、私自身は使用したことがないので、そこに入力することはできません。この方法でサポートが必要な場合は、コードを追加してください。

于 2011-08-19T13:55:11.323 に答える
1

ビジーインジケーターを確認してください

于 2011-08-19T13:40:59.557 に答える