Я искал ответ, но ни один из них не подходит под мой вопрос.
Я пытаюсь адаптировать метод MvVM , но я не думаю, что полностью его понимаю ...
Я пытаюсь создать отображение RPM в WPF.
Я хочу, чтобы он отображал число (от 0 до 3000) и обновлял его каждую секунду (до TextBlock
).
Я создал новый класс, в котором я пытаюсь создать генератор DispatcherTimer и Random, а затем помещаю его в текстовый блок пользовательского интерфейса.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Threading;
namespace Aldeba.UI.WpfClient
{
public class GenerateRpm
{
public GenerateRpm()
{
DispatcherTimer timer = new DispatcherTimer
{
Interval = new TimeSpan(0, 0, 5)
};
timer.Start();
timer.Tick += Timer_Tick;
}
public int RandomValue()
{
Random random = new Random();
int RandomRpm = random.Next(0, 3001);
return RandomRpm;
}
void Timer_Tick(object sender, EventArgs e)
{
MainWindow mainWindow = new MainWindow();
GenerateRpm rpm = new GenerateRpm();
mainWindow.RpmDisplayLabel.Text = rpm.RandomValue().ToString();
}
}
}
Мой файл MainWindow.xaml.cs выглядит следующим образом ...
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainWindowViewModel();
this.DataContext = new GenerateRpm();
}
}
}
Нужно ли добавлять datacontext ко всем классам, к которым я хочу получить доступ (для привязок для примера)?
Это главное окно, в котором я хочу, чтобы число оборотов отображалось во второмTextBlock
.
<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock Text="RPM:" Style="{StaticResource RpmDisplay}" />
<TextBlock x:Name="RpmDisplayLabel" Text="{Binding }" Style="{StaticResource RpmDisplay}" />
</StackPanel>
Что я упускаю и / или делаю неправильно, чтобы иметь возможность сделать это?