【发布时间】:2016-01-04 18:25:48
【问题描述】:
我使用 PATH 为文本框制作了自定义样式。该框看起来正是我想要的,但是当我在其中写任何文本时,似乎什么也没有出现。似乎我的风格中的某些东西阻止了它,或者我需要添加一些东西才能显示内容。但我不确定到底是什么,有没有人知道我可以做些什么来让文本出现在定制的盒子里?
<Style x:Key="AppearingTextbox" TargetType="{x:Type TextBox}">
<Setter Property="Cursor" Value="Arrow"/>
<Setter Property="Foreground" Value="#3E82C4"/>
<Setter Property="Background" Value="#0F1C2B"/>
<Setter Property="Opacity" Value="0"/>
<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<StackPanel>
<Path Data="M0 0 30 0 50 -10 70 0 100 0 100 30 0 30z" Fill="#0F1C2B"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Ikona, Path=IsMouseOver}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard >
<Storyboard TargetProperty="Opacity" Duration="00:00:00.3" AutoReverse="False">
<DoubleAnimation From="0" To="1" Duration="00:00:00.3"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard >
<Storyboard TargetProperty="Opacity" Duration="00:00:00.3" AutoReverse="False">
<DoubleAnimation From="1" To="0" Duration="00:00:00.3"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
应用到这个TextBox:
<TextBox Style="{DynamicResource AppearingTextbox}" Height="30" Width="100" FontSize="10" Margin="0,480,0,0">
Some text
</TextBox>
感谢一群人,我设法让它工作。 我不能把它放在边框标签内,因为边框标签只接受 1 个子元素。 相反,我使用了网格。网格也很好,因为在文档中我在某处读到它允许将元素堆叠在一起。 这就是我为将来偶然发现此问题的任何人所做的。
在<ControlTemplate> 标签中,我做了以下操作:
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Path Data="M0 0 30 0 50 -10 70 0 100 0 100 30 0 30z" Fill="#0F1C2B"/>
<ScrollViewer Margin="0" x:Name="PART_ContentHost" />
</Grid>
</ControlTemplate>
这立即使文本出现在我制作的框中。一点点样式使文本正好在我想要的位置,但仅此而已。
非常感谢并认为这已解决:)
【问题讨论】:
-
因此,当您将文本添加为 TextBox 的
Content时,您的Content在模板中的哪个位置处理?将您的与默认值进行比较,我敢打赌您很快就会发现自己的愚蠢行为。 :)