前言
通过给控件增加Behaviors的方式,可以将一些常用的功能封装好,在使用的使用,只需要几行代码即可将该功能增加到控件上。
1、TextBox 获取焦点时 自动选择所有内容
Behavior实现代码如下:
/// <summary>
/// 自动选择所有内容
/// </summary>
public class AutoSelectAllBehavior : Behavior<TextBoxBase>
{
protected override void OnAttached()
{
//通过键盘获取的焦点
AssociatedObject.GotKeyboardFocus += (s, _) => ((TextBoxBase)s).SelectAll();
//通过鼠标获取焦点
AssociatedObject.GotFocus += (s, _) => ((TextBoxBase)s).SelectAll();
}
}
引用代码如下:
<TextBox>
<i:Interaction.Behaviors>
<s:AutoSelectAllBehavior />
</i:Interaction.Behaviors>
</TextBox>
2、窗体最大化行为
Behavior实现代码如下:
/// <summary>
/// 窗体最大化行为
/// </summary>
public class AutoMaximizeBehavior : Behavior<Window>
{
protected override void OnAttached()
{
AssociatedObject.Loaded -= OnLoaded;
AssociatedObject.Loaded += OnLoaded;
}
protected override void OnDetaching()
{
AssociatedObject.Loaded -= OnLoaded;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
AssociatedObject.WindowState = WindowState.Maximized;
}
}
引用代码如下:
<Window>
<i:Interaction.Behaviors>
<ib:AutoMaximizeBehavior />
</i:Interaction.Behaviors>
</Window>
3、窗体拖动事件
Behavior实现代码如下:
/// <summary>
/// 窗体拖动
/// </summary>
public class WindowDragBehavior : Behavior<Window>
{
protected override void OnAttached()
{
AssociatedObject.MouseLeftButtonDown += (s, _) => ((Window)s).DragMove();
}
}
引用代码如下:
<Window>
<i:Interaction.Behaviors>
<ib:WindowDragBehavior />
</i:Interaction.Behaviors>
</Window>