Я использовал простой DependencyProperty для моего WPF-элемента управления, чтобы использовать его в Binding.Связывание свойств зависимостей - присвоить новое значение
public static readonly DependencyProperty PollingProperty = DependencyProperty.Register("Polling", typeof(Polling), typeof(ConverterView), new UIPropertyMetadata(null));
public Polling Polling
{
get { return (Polling)GetValue(PollingProperty); }
set { SetValue(PollingProperty, value); }
}
Контроль сам устанавливается как DataContext, так что в XAML я просто использовать его как это:
<ProgressBar Height="25" Value="{Binding Path=Polling.Progress, Mode=OneWay}" />
Polling.Progress представляет собой целое свойство, которое реализует INoftiyPropertyChanged, поэтому изменения получить повышение в пользовательском интерфейсе , Все работает отлично, и изменения в «Прогрессе» отображаются в ProgressBar, как и ожидалось.
Однако в моем приложении есть определенный момент, когда к DependencyProperty применяется новое значение «Опрос».
Polling = new Polling(); Polling.Start();
После этого привязка больше не оценивается, и ProgressBar остается в последнем значении старого экземпляра.
Update:
В моем случае, может быть, немного специфический, я объясню немного больше.
кнопки на моем ConverterView WPF-Control позволяет пользователю начать работу:
private void cmdAusformatieren_Click(object sender, RoutedEventArgs e)
{
Polling = Document.Converter(ConvertFinished);
}
Преобразовать-метод принимает в качестве параметра делегат, который будет вызываться после завершения операции. (Весь процесс выполняется асинхронно.) Метод преобразования возвращает Опрос -объект, который обеспечивает целочисленное свойство Progress, которое предоставляет информацию, которую я хочу отобразить в ProgressBar. (Что может вводить в заблуждение здесь, Polling - это имя моего DependencyProperty, а также имя моего класса).
Насколько это все выглядит нормально, и работает привязка к опросу. Progress работает.
В моем случае ConvertFinished(), который запускается после первой операции, выполняется, я возвращаю новый экземпляр опроса и хочу использовать его в Binding с этого момента. не
private void ConvertFinished(object result)
{
Polling = Document.Format((byte[])result, FormatFinished);
}
После этого задания на мой Polling DependencyProperty, вязка больше не обновляется и остается с его предыдущим значением.
Я добавил его к ответу только для удобства чтения. У вас есть доступ к вашему пользовательскому интерфейсу от ConvertFinished кстати? –
Да, я вернулся в поток пользовательского интерфейса и могу выполнять любую операцию напрямую. – Roper
Задействовал ли прогресс на 0? –