我需要创建一个与背景完全融合的textBoox,所以我使用了这个XAML:
<TextBox Text="Hello" VerticalAlignment="Bottom" Name="txtAsk" FontFamily="Consolas" Margin="8,0,0,0" TextWrapping="Wrap" AutoWordSelection="True" KeyDown="onEnter">
<TextBox.Template>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Rectangle Stroke="{StaticResource ResourceKey=detailMarkBrush}" StrokeThickness="0"/>
<TextBox Margin="4" Text="{TemplateBinding Text}" BorderThickness="0" Background="{x:Null}" SnapsToDevicePixels="True" />
</Grid>
</ControlTemplate>
</TextBox.Template>
</TextBox>
然而,现在问题是,当我将一个按钮附加到界面并触发它以在消息窗口中显示TextBox的内容时,它甚至在更改文本框内的值后才显示默认文本! 按钮代码如下:
private void btnTriggerEnter_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(txtAsk.Text);
}
我不确定我搞砸了哪里。如果需要任何其他细节,请发表评论。 我的MainWindow有这段代码:
public MainWindow()
{
InitializeComponent();
Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
感谢。
答案 0 :(得分:1)
您应该使用:
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Text}"
那是因为TemplateBinding
只为您提供OneWay
来源(在基础Binding
中),您需要TwoWay
。