簡體   English   中英

從C#代碼隱藏訪問XAML控件

[英]Access XAML controls from C# code-behind

我的VS項目中有兩個文件: Custom.xamlCustom.cs

在我的XAML文件中,我有以下文本框:

<TextBox x:Name="TextBox1" Text="{Binding Value, Mode=TwoWay}" Foreground="Black" Background="Green" SelectionChanged="TextBox1_SelectionChanged" />

<TextBox x:Name="TextBox2" Text="{Binding Value, Mode=TwoWay}" Foreground="Black" Background="Green" SelectionChanged="TextBox2_SelectionChanged" />

在我的.cs中 ,我有以下方法:

 void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
 {
     TextBox t = e.Source as TextBox
 }

我可以成功點擊上面的事件處理程序。 然后,我可以通過使用e.Source獲取TextBox1及其屬性,但我想訪問TextBox2及其屬性。

作為旁注, .cs文件只是我引用的C#類,而不是xaml.cs。 另外,我知道我可以通過UserControl實現這個,但是由於這篇文章范圍之外的原因,在這種情況下不能這樣做。

請告訴我如何獲取/設置TextBox2屬性。

謝謝。

編輯:對此有任何其他意見嗎? 作為一種解決方法,我添加了一個名為TextBox2_Loaded的事件處理程序,然后將e.Source設置為實例變量。 然后,在TextBox1_SelectionChanged中,我可以訪問實例變量。 真的想直接定位控件(例如TextBox2.IsEnabled)。 我必須在某個地方錯過聲明或繼承。 甚至無法使用FindName找到控件。

只要您在XAML中設置了名稱,就可以直接通過名稱訪問它(XAML編譯器將為您創建一個實例變量。)

void TextBox1_SelectionChanged(object sender, RoutedEventArgs e) 
{ 
    TextBox t = e.Source as TextBox 
    TextBox2.Text = "Whatever";
} 

好吧,所以我顯然在這篇文章中遺漏了一個關鍵組件......我的TextBox控件位於DataTemplate控件中。 根據我的研究,在DataTemplate控件內部時無法訪問TextBox控件。 我真的不認為這很重要,但我想當這種情況存在時,不會創建實例變量。

如果我錯誤地解釋了這一點,請提供輸入。 現在,我已經繼續添加了一個Loaded事件並將我的TextBox控件定義為實例變量,以便我可以訪問它們並在發生其他活動時更改屬性。

感謝大家的投入。

這恰好發生在我身上。 我不得不關閉我的解決方案並重新打開它。

暫無
暫無

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

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