访问XAML从C#隐藏代码控制
我在VS项目中的两个文件:Custom.xaml
和Custom.cs
访问XAML从C#隐藏代码控制
在我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的控件。
好了,所以我显然已经离开了这篇文章中的关键组件... My TextBox控件位于DataTemplate控件的内部。从我的研究中,在DataTemplate控件内部无法访问TextBox控件。我真的不认为这很重要,但我猜这个场景存在时不会创建实例变量。
如果我错误地解释了这一点,请提供输入。现在,我已经开始并添加了一个Loaded事件,并将我的TextBox控件定义为实例变量,以便在其他活动发生时访问它们并更改属性。
感谢大家的意见。
当然,即使在加载的事件中,您也无法从DataTemplate访问命名组件。 您需要捕获您的cerated UI组件的实例。 – Ouarzy 2013-02-13 08:19:02
只要您设置了namein的XAML,你可以直接按名称访问它(XAML编译器会为你创建一个实例变量。)
void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
{
TextBox t = e.Source as TextBox
TextBox2.Text = "Whatever";
}
由于某些原因,我不能使用TextBox2。 Intellisense不显示它,编译器认为它是未定义的。我需要继承我的课程吗?公共分类自定义:? – Josh 2012-03-03 19:42:52
尝试进行构建,以便Studio可以看到xaml编译器将创建的字段。编辑。是的,您的代码应该是与您的XAML匹配的部分类。 – GazTheDestroyer 2012-03-03 19:45:48
您是否确定我对我班的定义是正确的,还是我需要继承某些东西?另外,我已经多次构建了我的项目。 – Josh 2012-03-03 19:58:48
这只是发生在我身上。我不得不关闭我的解决方案并重新打开它。
你是否使用textbox2作为重复控件(gridview,listview..etc)的项目? – 2012-03-03 19:30:50
不,我没有使用gridview或listview – Josh 2012-03-03 19:43:11