You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF自定义ModernTextBox样式无法获取文本值问题求助

WPF自定义TextBox样式无法获取输入内容的修复方案

问题根源

你的ModernTextBox模板中嵌套了一个子TextBox(SearchBox),使用{TemplateBinding Text}绑定父TextBox的Text属性,但TemplateBinding默认是单向绑定:父控件的Text值能传递给子TextBox,但子TextBox的输入内容不会反向同步回父控件的Text属性,导致后台访问NameInsertTextBox.Text时始终为空。

修复步骤

将嵌套TextBox的Text绑定改为双向绑定,通过RelativeSource关联模板父控件,确保输入内容能同步回父控件。

修改模板中的嵌套TextBox代码:

<TextBox Margin="1" 
         Text="{Binding Text, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" 
         BorderThickness="0" Background="Transparent"
         VerticalContentAlignment="Center" Padding="5" Foreground="{StaticResource AccentGreyColorBrush}" 
         x:Name="SearchBox">
</TextBox>

可选优化

  1. 模板内的Rectangle未设置Stroke属性,若需要边框可补充Stroke="Gray"等样式;
  2. 提示文本的触发器可直接绑定父控件Text,无需依赖子TextBox:
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource TemplatedParent}}" Value="">
    <Setter Property="Visibility" Value="Visible"/>
</DataTrigger>

修改完成后,点击按钮即可正确获取文本框内的输入内容。

内容的提问来源于stack exchange,提问作者Peeradon Sarnkaew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 14:26:46