我的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" />
在我的 .cs 中,我有以下方法:
void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
{
TextBox t = e.Source as TextBox
}
我可以成功点击上面的事件处理程序。然后,我可以使用TextBox1
抓取e.Source
及其属性,但我想访问TextBox2及其属性。
作为旁注, .cs 文件只是我引用的C#
类,而不是 xaml.cs 。另外,我了解我可以通过 UserControl 实现此功能,但由于本帖子范围之外的原因,无法在此方案中执行此操作。
请告知我如何获取/设置TextBox2
的属性。
感谢。
编辑:关于此的任何其他输入?作为一种解决方法,我添加了一个名为TextBox2_Loaded的事件处理程序,然后将e.Source设置为实例变量。然后,在TextBox1_SelectionChanged中,我可以访问实例变量。真的想直接定位控件(例如TextBox2.IsEnabled)。我必须在某个地方错过声明或继承。甚至无法使用FindName找到控件。
答案 0 :(得分:3)
只要您在XAML中设置了名称,就可以直接通过名称访问它(XAML编译器将为您创建一个实例变量。)
void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
{
TextBox t = e.Source as TextBox
TextBox2.Text = "Whatever";
}
答案 1 :(得分:3)
好吧,所以我显然在这篇文章中遗漏了一个关键组件......我的TextBox控件位于DataTemplate控件中。根据我的研究,在DataTemplate控件内部时无法访问TextBox控件。我真的不认为这很重要,但我想当这种情况存在时,不会创建实例变量。
如果我的解释不正确,请提供输入。现在,我已经继续添加了一个Loaded事件并将我的TextBox控件定义为实例变量,以便我可以访问它们并在发生其他活动时更改属性。
感谢大家的投入。
答案 2 :(得分:1)
这恰好发生在我身上。我不得不关闭我的解决方案并重新打开它。