有没有办法纯粹通过XAML突出显示文本框中的所有文本,或者是否必须在Xaml.cs中完成
谢谢!
答案 0 :(得分:11)
这就是你要做的事情:
首先,将DoubleClickBehavior.cs
类添加到您的项目中。
class DoubleClickBehavior : Behavior<TextBox>
{
protected override void OnAttached()
{
AssociatedObject.MouseDoubleClick += AssociatedObjectMouseDoubleClick;
base.OnAttached();
}
protected override void OnDetaching()
{
AssociatedObject.MouseDoubleClick -= AssociatedObjectMouseDoubleClick;
base.OnDetaching();
}
private void AssociatedObjectMouseDoubleClick(object sender, RoutedEventArgs routedEventArgs)
{
AssociatedObject.SelectAll();
}
}
然后在.xaml
中,将此行为添加到TextBox:
<TextBox>
<i:Interaction.Behaviors>
<local:DoubleClickBehavior/>
</i:Interaction.Behaviors>
</TextBox>
您需要向.xaml
添加两个名称以使用您的行为。 (我的项目名称是WpfApplication1
,因此您可能需要更改它:)
xmlns:local ="clr-namespace:WpfApplication1"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
就是这样。您还需要System.Windows.Interactivity.dll
才能使用Behavior
类。
您可以从Nuget Package Manager下载。
答案 1 :(得分:5)
使用TextBox,您可以添加PreviewMouseDoubleClick
事件。
<TextBox DockPanel.Dock="Top" Name="MyTextBox" AcceptsReturn="True" PreviewMouseDoubleClick="TextBoxSelectAll"/>
然后,您将TextBox
的{{3}}设置为TextBox
中的文字。
private void TextBoxSelectAll(object sender, MouseButtonEventArgs e) {
// Set the event as handled
e.Handled = true;
// Select the Text
(sender as TextBox).SelectAll();
}