![](/img/trans.png)
[英]How to store UserInput from TextBox in a variable - Avalonia UI, C#
[英]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.