2016-12-12 10 views
-4

enter image description here HI, мне нужна простая вещь мне нужно две кнопки, Start, End при появлении нажатии индикатор начальной загрузки, при нажатии End он должен прекратить заранее спасибоWPF индикатор загрузки и две кнопки

+0

Покажите нам, что вы» вы уже пытались. – FCin

ответ

1

вы можете использовать ICommand-pattern, И ниже очень наивный пример того, что вам нужно сделать (надеюсь, что это помогает):

Ваш XAML - Это, как вы связать ваши кнопки с помощью ICommand из вашей ViewModel:

<StackPanel> 
    <local:YourCustomBusyIndicator IsBusy="{Binding IsBusy}"/> 
    <Button Content="Start" Command="{Binding StartCmd}"/> 
    <Button Content="End" Command="{Binding EndCmd}"/> 
</StackPanel> 

Вы ViewModel Код:

public class YourViewModel : INotifyPropertyChanged 
{ 
    private bool _isBusy; 
    public bool IsBusy 
    { 
     get { return _isBusy; } 
     set 
     { 
      _isBusy = value; 
      OnPropertyChanged(); 
     } 
    } 

    public RoutedCommand StartCmd { get; } 
    public RoutedCommand EndCmd { get; } 

    public YourViewModel() 
    { 
     StartCmd = new RoutedCommand(() => IsBusy = true); 
     EndCmd = new RoutedCommand(() => IsBusy = false); 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 


//Simple implementation of ICommand 
public class RoutedCommand :ICommand 
{ 
    private readonly Action _onExecute; 

    public RoutedCommand(Action onExecute) 
    { 
     _onExecute = onExecute; 
    } 
    public bool CanExecute(object parameter) 
    { 
     return true; 
    } 

    public void Execute(object parameter) 
    { 
     _onExecute(); 
    } 

    public event EventHandler CanExecuteChanged; 
} 

Кроме того, более стандартный путь для RoutedCommand будет также пройти Func, который возвращает логическое значение предиката для вызова на CanExecute

+0

Спасибо, Стас! – user3134194

+0

@ user3134194 Ответ Стаса ответил на ваш вопрос? Если да, примите это как ответ на свой вопрос. – m1o2