2016-12-12 9 views

答えて

1

で 感謝を停止する必要があります 、押してスタートローディングインジケータが表示されたら、私は2つのボタン、スタート、終了 が必要 シンプルなものを必要としますあなたはICommand-pattern、 を使用して、以下のあなたが(それが役に立てば幸い)するために必要なものの非常に単純な例であることができます。

あなたのXAML - これは、あなたのViewModelからのICommandを使用して、ボタンをバインドする方法を示します。

<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のためのより多くの標準的な方法は、CanExecute

+0

ありがとうStas! – user3134194

+0

@ user3134194 Stasの答えがあなたの質問に答えましたか?もしそうなら、あなたの質問に対する答えとしてそれを受け入れてください。 – m1o2

関連する問題