Avalonia UI - Как получить / установить свойства элементов управления UI из кода
У меня есть несколько TabControl
определены в моем XAML. Я хотел бы, чтобы моя ViewModel знала о TabItem
имя или индекс TabItem
это выбрано.
у меня тоже есть ScrollViewer
что я хотел бы всегда прокручивать вниз, когда нажата кнопка.
Я должен быть в состоянии решить обе вышеупомянутые проблемы, если бы я мог каким-то образом получить доступ к элементам в моем коде.
Как я могу получить что-то вроде этого:
var tabIndex = this.GetElement<TabControl>("NameOfSomeTabControl").SelectedIndex;
var scrollViewer = this.GetElement<ScrollViewer>("NameOfSomeScrollViewer");
scrollViewer.VerticalScrollBarValue = scrollViewer.VerticalScrollBarMaximum;
Изменить: код для XAML, код ViewModel
Редактировать 2: Похоже, я могу получить экземпляр элемента из класса окна, однако я все еще не уверен, как передать ссылку на ViewModel.
Изменить 3: я могу добиться просмотра прокрутки, идущего вниз, автоматически с помощью кода ниже. однако, когда этот метод вызывается, кажется, что прокрутка отключена.
var tbRaw = this.Get<TextBlock>("tbRawOutput");
tbRaw.PropertyChanged += (s,e) => {
var svRaw = this.Get<ScrollViewer>("svRawOutput");
svRaw.Offset = new Vector(svRaw.Offset.X, svRaw.Extent.Height -svRaw.Viewport.Height);};
0 ответов
Более простой способ сделать это - использовать DataContextChanged
обработчик событий в вашем главном Window
учебный класс:
public MainWindow()
{
InitializeComponent();
DataContextChanged += (object sender, EventArgs wat) =>
{
// here, this.DataContext will be your MainWindowViewModel
};
}
Затем вы можете прикрепить больше обработчиков событий / использовать геттеры и сеттеры к модели представления из Window