У меня есть следующее свойство зависимости, которое работает нормально, но не выполняет автоматическое обновление.
Свойства зависимостей - это все свойства класса RegistrationButton.cls.
public static readonly DependencyProperty DuurStilstandProperty =
DependencyProperty.Register("DuurStilstand", typeof(string), typeof(RegistrationButton), new UIPropertyMetadata(""));
.NET публичная собственность.
public string DuurStilstand
{
get { return (string)GetValue(DuurStilstandProperty); }
set { SetValue(DuurStilstandProperty, value); }
}
Что я в основном делаю, так это пытаюсь отобразить время (DateTime со значением по умолчанию 3 минуты), и после этого время продолжает увеличиваться с помощью таймера и увеличивает Datetime на 1 секунду каждую секунду.
Таким образом, на экране должно отображаться 00:03:00, и оно начинает увеличиваться каждую секунду.
Я пробовал привязку TwoWay (не уверен, что это проблема?), Но когда я пытаюсь выполнить следующее, происходит сбой моего приложения:
public static readonly DependencyProperty DuurStilstandProperty =
DependencyProperty.Register("DuurStilstand", typeof(string), typeof(RegistrationButton), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
Код, который предусматривал создание кнопки (где отображается время) и таймера:
public void InitializeDispatcherTimerStilstand()
{
timerStilstand = new DispatcherTimer();
timerStilstand.Tick += new EventHandler(timerStilstand_Tick);
timerStilstand.Interval = new TimeSpan(0, 0, 1);
timerStilstand.Start();
timerStilstand.ToString();
}
private void timerStilstand_Tick(object sender, EventArgs e)
{
this.tijdStilStandRegistrationBtn.AddSeconds(1);
}
Код, который создает кнопку:
Btn.Duurstilstand - это свойство, которое содержит время (формат чч: мм: сс).
tijdStilStandRegistrationBtn = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 3, 0);
RegistrationButton btn = new RegistrationButton(GlobalObservableCollection.regBtns.Count.ToString());
btn.RegistrationCount = GlobalObservableCollection.regBtnCount;
btn.Title = "btnRegistration" + GlobalObservableCollection.regBtnCount;
btn.BeginStilstand = btn.Time;
btn.DuurStilstand = String.Format("{0:T}", this.tijdStilStandRegistrationBtn);
GlobalObservableCollection.regBtns.Add(btn);
GlobalObservableCollection.regBtnCount++;
InitializeDispatcherTimerStilstand();
В настоящее время кажется, что 00:03:00 отображается только как время, но не обновляется, когда моя программа работает.
Я также попытался установить для свойства UpDateSourceTrigger значение PropertyChanged, но это не имело никакого значения (это находится в стиле типа RegistrationButton).
<TextBlock x:Name="tbDuurStilstand" TextWrapping="Wrap"
Text="{Binding DuurStilstand, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="7.5,5,0,0" Height="24.8266666666667"/>
EDIT
public void CreateRegistrationButton()
{
tijdStilStandRegistrationBtn = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 3, 0);
RegistrationButton btn = new RegistrationButton(GlobalObservableCollection.regBtns.Count.ToString());
btn.RegistrationCount = GlobalObservableCollection.regBtnCount;
btn.Title = "btnRegistration" + GlobalObservableCollection.regBtnCount;
btn.BeginStilstand = btn.Time;
//btn.DuurStilstand = String.Format("{0:T}", this.tijdStilStandRegistrationBtn);
GlobalObservableCollection.regBtns.Add(btn);
GlobalObservableCollection.regBtnCount++;
InitializeDispatcherTimerStilstand(btn);
}
РЕДАКТИРОВАТЬ 2:
timerStilstand.Tick += () => timerStilstand_Tick(btn); //error at ()
«Делегат« System.EventHandler »не принимает 0 аргументов»
С уважением.