wpf ScrollViewer 在輸入數據時去除水印
在WPF(Windows Presentation Foundation)中,ScrollViewer
控件通常用于顯示滾動內容。如果你想在ScrollViewer
中使用數據輸入(例如文本輸入),并且希望在輸入時去除水印(通常指的是文本框中的提示文字),你可以通過以下幾種方式實現:
使用樣式和觸發器(推薦)
最簡單且最常見的方法是使用WPF的樣式和觸發器來控制水印的顯示和隱藏。這種方法不需要修改任何屬性值,而是通過樣式和觸發器來動態地顯示或隱藏水印。
<ScrollViewer><TextBox Style="{StaticResource WatermarkStyle}" />
</ScrollViewer>
在資源字典中定義WatermarkStyle
:
<Style x:Key="WatermarkStyle" TargetType="{x:Type TextBox}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type TextBox}"><Grid><TextBox x:Name="textSource" Text="{Binding Text, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Background="Transparent" Padding="5,2" VerticalContentAlignment="Center"/><Label Visibility="Collapsed" x:Name="watermark" IsHitTestVisible="False" Padding="5,0">請輸入內容</Label></Grid></ControlTemplate></Setter.Value></Setter><Style.Triggers><Trigger Property="Text" Value=""><Setter TargetName="watermark" Property="Visibility" Value="Visible"/></Trigger><Trigger Property="IsKeyboardFocused" Value="True"><Setter TargetName="watermark" Property="Visibility" Value="Collapsed"/></Trigger></Style.Triggers>
</Style>
在這個方法中,當文本框為空且未獲得焦點時,水印可見;當文本框獲得焦點或有文本時,水印隱藏。這樣,你就可以在用戶輸入時自動去除水印了。