gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:21:28 24 4
gpt4 key购买 nike

我的 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 找到控件。

最佳答案

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

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

感谢大家的意见。

关于c# - 从 C# 代码隐藏访问 XAML 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com