Silverlight BusyIndicator - PullRequest
       3

Silverlight BusyIndicator

0 голосов
/ 26 января 2012

Есть ли способ не показывать BusyIndicator, когда он не занят (IsBusy = 'false')? После того, как я добавил Silverlight BusyIndicator в свой UserControl, он использует большую площадь, поэтому все остальные элементы управления перемещаются вниз и графический интерфейс больше не выглядит хорошим. Мне нужно, чтобы он был скрыт, когда он не занят, и обнаруживается, когда он занят.

Спасибо за помощь.

CK

1 Ответ

2 голосов
/ 26 января 2012

Я бы использовал стандартный BooleanToVisiblityConverter и привязал бы Visibilty к свойству 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>

В этом примере я предоставил как BusyIndicator, так и ProgressBar, чтобы вы могли видеть оба в действии.

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...