c# - 如何在 WPF 中设置不可点击的元素
问题描述
我正在尝试为 WPF 中的 TextBox 制作水印。为此,我在 TextBox 上有一个样式标签。
<Grid>
<TextBox Height="15" BorderThickness="0" HorizontalAlignment="Stretch"
DataContext="{Binding FilterDetailsViewModel, Source={StaticResource Locator}}"
Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay }"
TextChanged="SearchPatientByName"
Padding="0 0 0 3"
/>
<Label Margin="0,0,0,0" x:Name="WaterMarkLabel" Content="Search" VerticalAlignment="Center"
Visibility="Visible" Foreground="Gray" FontFamily="Arial">
</Label>
</Grid>
当 TextBox 的文本为空时,Label 可见,否则不可见。
问题是当标签获得焦点时,我无法更改 TextBox 中的文本。
我需要找到一种方法让这个标签不可点击。
解决方案
<Grid Height="20">
<TextBox Background="{x:Null}" Panel.ZIndex="1" BorderBrush="{x:Null}"
TextChanged="TextBox_TextChanged" >
</TextBox>
<StackPanel Background="#FFF3F3F3">
<Label x:Name="watermarklabel" Content="search" />
</StackPanel>
</Grid>
对于文本框 textchanged(标签名称为 watermarklabel):
TextBox ME = sender as TextBox;
if (ME.Text.Length > 0)
{
watermarklabel.Visibility = Visibility.Hidden;
}
else
{
watermarklabel.Visibility = Visibility.Visible;
}
推荐阅读
- r - tidyr separate():当许多条目相同时加速?
- python - 在pyqt5中实现的folium choropleth图例中没有颜色并且工具提示没有显示
- python - 在 Python 中遍历内部字典
- flutter - 如何在listview颤动中显示来自firestore的图像数组。?
- javascript - 可以在 vue 的其他文件中转移组件的功能吗?
- node.js - Node.js 应用程序构建在本地服务器上,但不是 heroku
- c# - 没有代码的 Razor 组件的类名是什么
- aws-lambda - 链接处理 lambda 时不在 SQS 队列中的消息
- typescript - Fuse.js includeMatches 突出显示 - 它是如何工作的?
- r - 如果观察结果不连续,如何将分组变量 ID 视为多个组?