簡體   English   中英

Avalonia UI-如何從代碼獲取/設置UI控件的屬性

[英]Avalonia UI - How to get/set properties of UI controls from code

我在XAML中定義了幾個TabControl 我希望ViewModel知道TabItem名稱或所選TabItem的索引。

我也有一個ScrollViewer ,當我按下按鈕時,我總是想一直滾動到底部。

如果我能夠以某種方式訪問​​代碼中的元素,那么我應該能夠解決上述兩個問題。

我如何才能達到以下目的:

var tabIndex = this.GetElement<TabControl>("NameOfSomeTabControl").SelectedIndex;

var scrollViewer = this.GetElement<ScrollViewer>("NameOfSomeScrollViewer");
scrollViewer.VerticalScrollBarValue = scrollViewer.VerticalScrollBarMaximum;

編輯: xaml的 代碼viewModel代碼

編輯2:看起來我能夠從window類獲取元素的實例,但是我仍然不確定如何將引用傳遞給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);};

一種更簡單的方法是在主Window類中使用DataContextChanged事件處理程序:

public MainWindow()
{
    InitializeComponent();
    DataContextChanged += (object sender, EventArgs wat) =>
    {
        // here, this.DataContext will be your MainWindowViewModel
    };
}

然后,您可以在Window的視圖模型上附加更多事件處理程序/使用getter和setter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM