Ich habe Probleme mit einem UserControl-Update auf der Hauptseite mit einem DispatcherTimer zu signalisieren, um neue Daten von einigen Temperatursensoren zu ziehen.C# usercontrol nicht mit DispatcherTimer Tick Ereignis
Sensors.xaml.cs
public sealed partial class Sensors : UserControl
{
public Sensors()
{
this.InitializeComponent();
}
public string Sensorlbl
{
get { return (string)GetValue(SensorlblProperty); }
set { SetValue(SensorlblProperty, value); }
}
// Using a DependencyProperty as the backing store for Sensorlbl. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SensorlblProperty =
DependencyProperty.Register("SensorLbl", typeof(string), typeof(Sensors), null);
Sensors.xaml
<Grid>
<TextBlock Name="SensorLbl" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,5,0,0" Text="{Binding Sensorlbl, ElementName=userControl, Mode=TwoWay}"/>
</Grid>
MainPage.xaml.cs
public MainPage()
{
tempTimer = new DispatcherTimer();
tempTimer.Tick += GetTemp;
tempTimer.Interval = TimeSpan.FromMilliseconds(1000);
tempTimer.Start();
Sensor1.Sensorlbl = "test";
}
public void GetTemp(object sender, object e)
{
Sensor1.Sensorlbl = "Test Working";
Debug.WriteLine(Sensor1.Sensorlbl);
}
MainPage.xaml
<local:Sensors x:Name="Sensor1" Margin="0,0,0,0" Width="107" Height="155" />
Mit dem obigen Beispiel verwende ich nur, um zu versuchen, das Aktualisieren der UserControl in MainPage zu beweisen. Wenn ich das Programm starte, bekomme ich eine Ausgabe von "Test Working", aber der Bildschirm zeigt immer noch nur "test" an.
Vielen Dank für jeden Hinweis.
Ich denke, es gibt einen Tippfehler in der DependencyProperty Definition: SensorLbl vs Sensorlbl. –
Entschuldigung, das ist das erste Mal, dass ich mit C# arbeite (oder irgendetwas, das nicht auf Industrieroboter basiert). Was meinst du, ich habe die Implementierung von Sensor1.Sensorlbl nicht gezeigt? Der Code, den ich oben gepostet habe, ist der, den ich bei diesem Test ausgeführt habe. Sollte es andere Parameter MainPage.xaml geben? –
Ja das war das Problem. Ich fühle mich jetzt irgendwie dumm, weil ich das nicht verstanden habe. Danke –