从 ControlTemplate 按名称获取代码中的控件
我的 WPF 应用程序中有下一个控件模板。
<Style TargetType="Label" x:Key="LabelStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBox x:Name="MyTextBlock" Text="{TemplateBinding Content}" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top" />
<Label Content="{TemplateBinding Content}" Grid.Column="1" Grid.Row="1"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
文本框“MyTextBlock”在窗口的 C# 代码中不可见。如何在代码中访问此文本块
I have next control template in my WPF app.
<Style TargetType="Label" x:Key="LabelStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBox x:Name="MyTextBlock" Text="{TemplateBinding Content}" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top" />
<Label Content="{TemplateBinding Content}" Grid.Column="1" Grid.Row="1"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
TextBox "MyTextBlock" is invisible in C# code of window. How can I access to this textblock in code
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试将您的属性直接绑定到文本框的可见性,
其中 BoolToVis 定义为:
Try binding your property to the textbox's visibility directly
where BoolToVis is defined as:
您可以在后面的代码中执行与 XAML 页面类似的操作(除了您需要在
OnApplyTemplate
覆盖中执行此操作):编辑 只是注意到 MyTextblock 实际上是一个 TextBox ,因此将
TextBox
转换为TextBlock
将导致异常。尝试更新的代码。You can do a similar thing that XAML pages do in the code behind (except for you need to do it in
OnApplyTemplate
override):EDIT Just noticed that MyTextblock is actually a TextBox, so casting a
TextBox
toTextBlock
will cause an exception. Try the updated code.我为我的情况找到了一些解决方案。我只是在我的 ControlTemplate 中使用 TextBox 的已加载事件,
但这不是那么漂亮的解决方案。
I found some solution for my situation. I just use loaded event of TextBox in my ControlTemplate
But it is not so beautiful solution.