0

ウィンドウが開いたときにグリッド1〜3がロードされている間に、視覚的な表示「ビジー」を表示しようとしています。「telerik:RadToggleButton isbusy」を使用してグリッドがロードされた後にロード表示を表示することができましたが、ウィンドウが開いたときにグリッドがロードされる前に表示したいと思います。誰かが私を正しい方向に向けることができますか?

 <Window.Resources/>

<UserControl Name="tbMain" HorizontalAlignment="Left">        
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition Height="25"></RowDefinition>
        </Grid.RowDefinitions>
        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
            <StackPanel Orientation="Vertical" HorizontalAlignment="Stretch">
                <telerik:RadGridView (1)/>
                <telerik:RadGridView (2)/>
                <telerik:RadGridView (3)/>
            </StackPanel>
        </ScrollViewer

        <DockPanel Grid.Row="1" Background="SkyBlue">
            <Button x:Name="btnAcceptMerge" Content="Accept Merge" DockPanel.Dock="Left"/>
            <Button x:Name="btnCancel"  Content="Cancel Merge" Click="btnCancel_Click" DockPanel.Dock="Right"/>
            <TextBlock Text=""/>
        </DockPanel>
    </Grid>
 </UserControl>
 </Window>
4

2 に答える 2

2

Xceed toolkit のビジー制御が利用できます。これを使用するには、backgroundworker を使用する必要があります。

以下は完全な解決策です。

XAML:

まず、Xceed ツールキットの名前空間参照を追加する必要があります。

xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"

その後、グリッドを囲む BusyIndi​​cator を使用する必要があり、進行状況を実装することもできます。

    <xctk:BusyIndicator.BusyContentTemplate>
        <DataTemplate>
            <StackPanel Margin="0" Background="#FFD1DEF0" >

                <TextBlock  Text="Generating......" />

                <StackPanel Margin="4">
                     <ProgressBar Value="{Binding Path=DataContext.ProgressValue, RelativeSource={RelativeSource Mode=FindAncestor, 
        AncestorType=Window}}" Height="15"/>
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </xctk:BusyIndicator.BusyContentTemplate>
    <xctk:BusyIndicator.OverlayStyle>
        <Style TargetType="Rectangle">
            <Setter Property="Fill" Value="Transparent" />

        </Style>
    </xctk:BusyIndicator.OverlayStyle>
    <xctk:BusyIndicator.ProgressBarStyle>
        <Style TargetType="ProgressBar">
            <Setter Property="IsIndeterminate" Value="False"/>
            <Setter Property="Visibility" Value="Collapsed"/>
            <Setter Property="Maximum" Value="100"/>
        </Style>
    </xctk:BusyIndicator.ProgressBarStyle>

         <telerik:RadGridView (1)/>
            <telerik:RadGridView (2)/>
            <telerik:RadGridView (3)/>
 </xctk:BusyIndicator>

ビューモデルで:

VM コンストラクターでは、IsVMBusy プロパティを true に設定する必要があります。

        var worker = new BackgroundWorker();
        worker.DoWork += (o, ea) =>
          {
    ///your task
     };
        worker.RunWorkerCompleted += (o, ea) =>
        {
            IsVMBusy = false;
          };
         worker.RunWorkerAsync();
于 2013-11-13T05:21:14.667 に答える