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

从C#代码隐藏访问XAML控件,c#,xaml,C#,Xaml,我的VS项目中有两个文件:Custom.xaml和Custom.cs 在我的XAML文件中,我有以下文本框: <TextBox x:Name="TextBox1" Text="{Binding Value, Mode=TwoWay}" Foreground="Black" Background="Green" SelectionChanged="TextBox1_SelectionChanged" /> <TextBox x:Name="TextBox2" Text="{Bi

我的VS项目中有两个文件:
Custom.xaml
Custom.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" />
我可以成功点击上面的事件处理程序。然后,我可以使用
e.Source
获取
TextBox1及其属性,但我想访问TextBox2及其属性

作为旁注,.cs文件只是我引用的
C#
类,而不是xaml.cs。此外,我知道我可以通过UserControl实现这一点,但在这个场景中无法实现,原因超出了本文的范围

请告知如何获取/设置
TextBox2
的属性

谢谢


编辑:还有其他关于这个的输入吗?作为一种解决方法,我添加了一个名为TextBox2_Loaded的事件处理程序,然后将e.Source设置为实例变量。然后,在TextBox1_SelectionChanged中,我可以访问实例变量。我真的希望直接以控件为目标(例如TextBox2.IsEnabled)。我肯定在什么地方丢失了一份声明或遗产。甚至无法使用FindName找到控件。

只要在XAML中设置了名称,就可以直接通过名称访问它(XAML编译器将为您创建一个实例变量)


好的,所以我显然在这篇文章中漏掉了一个关键部分。。。我的文本框控件位于DataTemplate控件内。根据我的研究,文本框控件在DataTemplate控件内部时无法访问。我真的不认为这有什么关系,但我想当这个场景存在时,不会创建实例变量

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


谢谢大家的意见。

这件事刚刚发生在我身上。我必须关闭我的解决方案并重新打开它

您是否将textbox2用作重复控件(gridview、listview等)的一项?不,我没有使用gridview或listview,但出于某些原因,我无法使用textbox2。Intellisense不显示它,编译器认为它未定义。我需要从某些东西继承类吗?公共部分类自定义:?尝试执行生成,以便Studio可以看到xaml编译器将创建的字段。编辑是的,您的代码隐藏应该是与您的XAML匹配的部分类。您是否确认我对类的定义是正确的,或者我需要从某个对象继承?此外,我已经构建了好几次我的项目。我还考虑过在加载的事件上定义控件。思想?我现在正在尝试实现它,我不知道它应该如何工作,因为TextBox2只是一个类型名,而不是一个定义的变量。当然,您不能从DataTemplate访问命名组件,即使在加载的事件中也是如此。您需要捕获cerated UI组件的实例。
 void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
 {
     TextBox t = e.Source as TextBox
 }
void TextBox1_SelectionChanged(object sender, RoutedEventArgs e) 
{ 
    TextBox t = e.Source as TextBox 
    TextBox2.Text = "Whatever";
}