Я только начал экспериментировать с C# и просматривать модели, и мне трудно получить значение переменной, выводимой в текстовый блок в файле XAML.
Итак, у меня есть модель просмотра под названием ReplayControlViewModel. cs, который имеет:
public class ReplayControlViewModel : ABCObservableObject
Внутри этого класса я создаю следующее:
public string overallBestSessionLap { get => Get<string>(); set => Set(value); }
И использую его в функции следующим образом:
private void MessageHandler_OnBroadcastingEvent(string sender, BroadcastingEvent evt)
{
if (evt.Type == BroadcastingCarEventType.BestPersonalLap)
// record best lap
overallBestSessionLap = evt.Msg;
}
Я затем есть другая модель представления, называемая SessionInfoViewModel.cs, которая имеет:
public class SessionInfoViewModel : ABCObservableObject
... и связанный файл XAML (SessionInfoView.xaml)
Я пытаюсь получить доступ к переменной следующим образом, но ничего отображается в GUI ....
<TextBlock Text="{Binding overallBestSessionLap}" Margin="5,1"/>
Я пробовал несколько вариантов, в том числе помещал имя класса впереди, но все равно не работает. Я уверен, что это должно быть легко, но если кто-то скажет мне, в чем я ошибаюсь, я был бы признателен.
Спасибо, Брэд
РЕДАКТИРОВАТЬ (Решение): Для справки, я нашел следующий код в моем MainWindow.xaml , который дал мне лучшее понимание того, как работает привязка.
<Window.DataContext>
<local:MainViewModel />
</Window.DataContext>
<Broadcasting:SessionInfoView DataContext="{Binding SessionInfoVM}" Grid.Column="1" Grid.Row="0" />
<Broadcasting:ReplayControlView DataContext="{Binding ReplayVM}" Grid.Column="1" Grid.Row="1" />
И в MainViewModel.cs он имел это ....
public class MainViewModel : ABCObservableObject
{
public SessionInfoViewModel SessionInfoVM { get; }
public ReplayControlViewModel ReplayVM { get; }
public MainViewModel()
{
SessionInfoVM = new SessionInfoViewModel();
ReplayVM = new ReplayControlViewModel();
}
}