将ControlTemplate应用于文本框会导致.Text变为空白(Silverlight)

时间:2010-10-07 14:09:10

标签: silverlight

我在XAML页面上有一堆文本框,我想要相同的大小。我创建了一个控件模板并将其放在页面的Grid.Resources部分中

<Grid.Resources>
    <ControlTemplate x:Key="basicTextbox" TargetType="TextBox" >
        <TextBox MinWidth="200" />
    </ControlTemplate>
</Grid.Resources>

并将其应用于如下文本框:

<TextBox x:Name="txtNewSec1" Template="{StaticResource basicTextbox}"/>

我有一个用户可以按下的按钮,在后面的代码中,我将用户输入的文本应用到对象中。每当文本在文本框中时文本将变回空白时,我感到很惊讶。从文本框中删除模板并再次单击该按钮后,在按钮的单击事件处理程序中,文本可以神奇地使用。我是否需要在ControlTemplate中设置以允许文本框在代码隐藏事件期间具有文本?或者这是Silverlight中的某种错误?

3 个答案:

答案 0 :(得分:3)

您不应该使用控件模板来实现您想要做的事情。你需要的是......造型(tada)

<Grid.Resources>
  <Style x:Key="basicTextBox" TargetType="TextBox">
    <Setter Property="MinWidth" Value="200"/>
  </Style>
</Grid.Resources>

<TextBox x:Name="txtNewSec1" Style="{StaticResource basicTextbox}"/>

答案 1 :(得分:1)

更改为样式,似乎有效:

<Style x:Key="basicTextbox" TargetType="TextBox" >
    <Setter Property="MinWidth" Value="200" />
</Style>

并在文本框中将“模板”更改为“样式”

<TextBox x:Name="txtNewSec1" Style="{StaticResource basicTextbox}" />

答案 2 :(得分:0)

在TextBox的模板中有一个TextBox似乎很奇怪。

是不是在第一个内部创建了第二个TextBox?

当我模拟你的例子并将Text值分配给它立即显示的Template TextBox时,后面实例中的任何Text值都不会做任何事情。