MVVM Textbox gotFocus绑定到方法不起作用

时间:2019-02-20 13:30:45

标签: c# .net binding textbox

我的视图模型中有一个方法。我如何将此方法绑定到textbox.gotfocus属性。

我的XAML部分是:

<TextBox Style=
    "{StaticResource TextBoxHadnigPanel}"
    GotFocus="{Binding GotFocusCustomerNameMethod}"
    LostFocus="{Binding LostFocusCustomerNameMethod}"
    x:Name="TextBoxCustomerName"
    Grid.Row="0"
    Grid.Column="1"
    MaxLength="16"
    Margin="10" />

如何绑定此LostFocusGotFocus属性?

有人吗? 预先感谢

1 个答案:

答案 0 :(得分:1)

您不能在WPF中绑定方法。

替代方法:您可以将行为用于具有MVVM的文本框。

您需要引用System.Windows.Interactivity才能实现。

public class TextBoxFocusBehavior : Behavior<TextBox>
{
    #region Overrides of Behavior

    protected override void OnAttached()
    {
        AssociatedObject.GotFocus += AssociatedObject_GotFocus;
        AssociatedObject.LostFocus += AssociatedObject_LostFocus;
        base.OnAttached();
    }

    private void AssociatedObject_LostFocus(object sender, RoutedEventArgs e)
    {
        //TODO Your LostFocus Method here.
    }

    private void AssociatedObject_GotFocus(object sender, RoutedEventArgs e)
    {
        //TODO Your GotFocus Method here.
    }

    #endregion
}

Xaml:

您需要在xaml文件中提供参考:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:behaviors="clr-namespace:YourNamespace"



<TextBox Style="{StaticResource TextBoxHadnigPanel}"
    x:Name="TextBoxCustomerName"
    Grid.Row="0"
    Grid.Column="1"
    MaxLength="16"
    Margin="10">
    <i:Interaction.Behaviors>
        <behaviors:TextBoxFocusBehavior />
    </i:Interaction.Behaviors>
</TextBox>