从C#代码隐藏访问XAML控件

Jos*_*osh 7 c# xaml

我的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" />
Run Code Online (Sandbox Code Playgroud)

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

 void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
 {
     TextBox t = e.Source as TextBox
 }
Run Code Online (Sandbox Code Playgroud)

我可以成功点击上面的事件处理程序.然后,我可以TextBox1通过使用抓取它的属性e.Source,但我想访问TextBox2及其属性.

作为一个旁注,该的.cs文件只是一个C#,我引用类,而不是一个xaml.cs.另外,我知道我可以通过UserControl实现这个,但是由于这篇文章范围之外的原因,在这种情况下不能这样做.

请告知我如何获得/设置属性TextBox2.

谢谢.

编辑:对此有任何其他意见吗?作为一种解决方法,我添加了一个名为TextBox2_Loaded的事件处理程序,然后将e.Source设置为实例变量.然后,在TextBox1_SelectionChanged中,我可以访问实例变量.真的想直接定位控件(例如TextBox2.IsEnabled).我必须在某个地方错过声明或继承.甚至无法使用FindName找到控件.

Jos*_*osh 4

好吧,所以我显然在这篇文章中遗漏了一个关键组件...我的 TextBox 控件位于 DataTemplate 控件内部。根据我的研究,在 DataTemplate 控件内部时无法访问 TextBox 控件。我真的认为这并不重要,但我想当这种情况存在时,不会创建实例变量。

如果我的解释不正确,请提供意见。现在,我已经添加了一个 Loaded 事件并将 TextBox 控件定义为实例变量,以便我可以在发生其他活动时访问它们并更改属性。

感谢大家的意见。