0
如何让WPF TextBox充当紧凑形式?
这意味着TextBox内的“标签文本”隐藏在点击或有“真实文本”时。
See working prototype如何使WPF TextBox充当紧凑形式?
如何让WPF TextBox充当紧凑形式?
这意味着TextBox内的“标签文本”隐藏在点击或有“真实文本”时。
See working prototype如何使WPF TextBox充当紧凑形式?
您可以在TextBox的样式中使用数据触发器,并将背景设置为包含文本的内容。一个简单的作品将是这样的:
<TextBox>
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock Text="This is the label text" Foreground="Silver" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
测试在Kaxaml; “标签文本”对齐方式并不完全正确,您可能想将其重构为更适合生产代码的东西。
编辑:为了掩盖“隐藏焦点”情景,您需要更复杂的触发器。这种替换datatrigger:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="" />
<Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Self}}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock Text="This is the label text" Foreground="Silver" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</MultiDataTrigger>
刚刚意识到我没有掩盖“隐藏焦点”的行为......如果有机会,我会更新它。 – 2010-10-13 07:38:15
我找到[Exteded WPF工具包]一些有用的东西(http://wpftoolkit.codeplex.com/) - [WatermarkTextBox](http://wpftoolkit.codeplex.com/wikipage ?title = WatermarkTextBox) – giperon 2011-03-29 17:04:12