我正在为我的文本输入创建一个基本样式,这些将有一个占位符。我正在尝试绑定该Text.IsEmpty
属性,但它不存在。所以我尝试了以下
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
CornerRadius="{TemplateBinding Border.CornerRadius}">
<Grid>
<TextBlock x:Name="Placeholder" Visibility="Visible" Text="{TemplateBinding Tag}"></TextBlock>
<ScrollViewer Background="Transparent" Margin="0" x:Name="PART_ContentHost"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=PART_ContentHost,Path=IsFocused}" Value="False" />
<Condition Binding="{Binding ElementName=PART_ContentHost, Path=Text.IsEmpty}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter TargetName="Placeholder" Property="Visibility" Value="Collapsed"/>
</MultiDataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
为简单起见,我只会在此处为我尝试过的所有其他内容编写多触发器。
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=IsFocused}" Value="False" />
<Condition Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=Text.IsEmpty}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter TargetName="Placeholder" Property="Visibility" Value="Collapsed"/>
</MultiDataTrigger>
两者都不起作用,我不是很深入使用RelativeSource
所以也许我使用了错误的源属性?任何人都可以建议我应该根据我的条件绑定什么。
应该没有文本,空格算作没有文本。
或者,如果输入聚焦,占位符就会消失。