我在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中的某种错误?
答案 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值都不会做任何事情。