wpf Индикатор выполнения привязки к команде - PullRequest
0 голосов
/ 14 июля 2011

Я бы хотел использовать прогрессбар простым способом. У меня есть запрос, который выполняется, чтобы вернуть данные в сетку, когда пользователь нажимает кнопку. Я хотел бы запустить индикатор выполнения при нажатии кнопки и остановить индикатор выполнения при возврате данных в таблицу.

Я просто хочу, чтобы индикатор выполнения продолжался (IsIndeterminate = "True"), чтобы показать, что на самом деле что-то происходит.

Есть ли способ привязать запуск и остановку индикатора выполнения к свойствам или командам в моей модели представления?

Спасибо за любые мысли.

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Используйте свойство IsIndeterminate как свое свойство, чтобы связать его со свойством ViewModel;В этом примере мой называется IsBusy.

    public partial class Window1 : Window
    {
        public MyViewModel _viewModel = new MyViewModel();

        public Window1()
        {
            InitializeComponent();

            this.DataContext = _viewModel;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //this would be a command in your ViewModel, making life easy
            _viewModel.IsBusy = !_viewModel.IsBusy;
        }
    }

    public class MyViewModel : INotifyPropertyChanged
    {
        private bool _isBusy = false;
        public bool IsBusy
        {
            get
            {
                return _isBusy;
            }
            set
            {
                _isBusy = value;
                PropertyChangedEventHandler handler = PropertyChanged;
                if(handler != null)
                    handler(this, new PropertyChangedEventArgs("IsBusy"));
            }
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler  PropertyChanged;

        #endregion
    }

В этом случае XAML использует обработчик события click для Button;однако в вашем случае вы просто привязали бы ваше действие , которое начнет вашу обработку, к команде на вашей ViewModel.

    <Grid>
           <ProgressBar Width="100" Height="25" IsIndeterminate="{Binding IsBusy}"></ProgressBar>
           <Button VerticalAlignment="Bottom" Click="Button_Click" Width="100" Height="25" Content="On/Off"/>
    </Grid>

Когда вы начинаете работу и заканчиваете работу, изменяя свойство IsBusyзатем в вашей ViewModel запустится и остановится неопределенное поведение, обеспечивающее активный / неактивный внешний вид, к которому вы стремитесь.

1 голос
/ 14 июля 2011

Вы можете выставить свойство, которое затем используете для запуска видимости ProgressBar, но лучше использовать элемент управления, который включает индикатор выполнения и предоставляет свойство, которое включает / выключает его. Например, BusyIndicator в расширенном наборе инструментов WPF.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...