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>
可选优化
- 模板内的
Rectangle未设置Stroke属性,若需要边框可补充Stroke="Gray"等样式; - 提示文本的触发器可直接绑定父控件
Text,无需依赖子TextBox:
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource TemplatedParent}}" Value=""> <Setter Property="Visibility" Value="Visible"/> </DataTrigger>
修改完成后,点击按钮即可正确获取文本框内的输入内容。
内容的提问来源于stack exchange,提问作者Peeradon Sarnkaew
相关产品推荐
相关产品推荐

