2012-01-26 47 views
0

有没有办法在忙时不显示BusyIndi​​cator(IsBusy ='false')?在将Silverlight BusyIndi​​cator添加到我的UserControl后,它使用了大面积区域,所有其他控件都向下移动,GUI看起来不再好。我需要的是,当它不忙时隐藏起来,并在忙时出现。Silverlight BusyIndi​​cator

感谢您的帮助。

CK

+0

你可以显示你正在尝试做一些更多的代码 –

回答

2

我会用一个标准BooleanToVisiblityConverter和公开程度绑定到IsBusy性质类似这样的:

<Grid Height="500" Width="500" Background="Blue"> 
    <Grid.Resources> 
     <Converters:BoolToVisConverter x:Key="BoolToVis"/> 
    </Grid.Resources> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <StackPanel Width="75"> 
     <ToggleButton x:Name="BusyButton" Content="Toggle Busy State"/> 
     <ToggleButton x:Name="ProgressButton" Content="Toggle ProgressButton State"/> 
    </StackPanel> 
    <toolkit:BusyIndicator Grid.Row="1" IsBusy="{Binding IsChecked, ElementName=BusyButton}" 
          Visibility="{Binding IsBusy, RelativeSource={RelativeSource Self}}"/> 
    <ProgressBar Grid.Row="2" Width="120" Height="10" Margin="4 2" VerticalAlignment="Center" IsIndeterminate="True" 
       Visibility="{Binding IsChecked, ElementName=ProgressButton, Converter={StaticResource BoolToVis}}"/> 
</Grid> 

我提供了一个既BusyIndi​​cator控件以及进度是这样的例子,所以你可以看到两个在行动。

的BooleanToVisibilityConverter是非常标准,并实现为这样:

public class BoolToVisConverter : IValueConverter 
{ 
     #region IValueConverter Members 

     public virtual object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (value == null) return Visibility.Collapsed; 

      return (bool)value == true ? Visibility.Visible : Visibility.Collapsed; 
     } 

     public virtual object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 

     #endregion 
} 
相关问题