C# 如何使用MVVM在WP7中聚焦文本框?
这个问题已经被问了好几次,不幸的是答案只适用于WPF。有人知道如何在silverlight中实现这一点吗?基本上,我需要关注代码中的某个文本框。我已经成功地使用了这种方法C# 如何使用MVVM在WP7中聚焦文本框?,c#,silverlight,windows-phone-7,mvvm,mvvm-light,C#,Silverlight,Windows Phone 7,Mvvm,Mvvm Light,这个问题已经被问了好几次,不幸的是答案只适用于WPF。有人知道如何在silverlight中实现这一点吗?基本上,我需要关注代码中的某个文本框。我已经成功地使用了这种方法 公共类焦点行为:行为 { 受保护的覆盖无效附加() { AssociatedObject.GotFocus+=(发送方,参数)=>IsFocused=true; AssociatedObject.LostFocus+=(发送方,a)=>IsFocused=false; AssociatedObject.Loaded+=(o,
公共类焦点行为:行为
{
受保护的覆盖无效附加()
{
AssociatedObject.GotFocus+=(发送方,参数)=>IsFocused=true;
AssociatedObject.LostFocus+=(发送方,a)=>IsFocused=false;
AssociatedObject.Loaded+=(o,a)=>{if(HasInitialFocus | | IsFocused)AssociatedObject.Focus();};
base.onatached();
}
公共静态只读从属属性IsFocusedProperty=
从属属性。寄存器(
“聚焦”,
类型(bool),
类型(焦点行为),
新属性元数据(false,(d,e)=>{if((bool)e.NewValue)((FocusBehavior)d).AssociatedObject.Focus();}));
公众关注的焦点
{
获取{return(bool)GetValue(IsFocusedProperty);}
set{SetValue(IsFocusedProperty,value);}
}
公共静态只读从属属性HasInitialFocusProperty=
从属属性。寄存器(
“聚焦”,
类型(bool),
类型(焦点行为),
新PropertyMetadata(false,null));
公众焦点
{
获取{return(bool)GetValue(HasInitialFocusProperty);}
set{SetValue(HasInitialFocusProperty,value);}
}
}
<TextBox x:Name="UserName" Style="{StaticResource LoginTextBox}">
<i:Interaction.Behaviors>
<localBehaviors:FocusBehavior HasInitialFocus="True"
IsFocused="{Binding UserNameIsFocused, Mode=TwoWay}"/>
</i:Interaction.Behaviors>
</TextBox>
谢谢!它工作得很好。还有没有一种方法可以通过这些绑定来解除文本框的焦点?(无需关注另一个文本框)解决了我的问题。我正在我的文本框的isEnabled上使用绑定。禁用+启用将解除文本框的焦点。似乎是黑客,但没有其他方法:/
<TextBox x:Name="UserName" Style="{StaticResource LoginTextBox}">
<i:Interaction.Behaviors>
<localBehaviors:FocusBehavior HasInitialFocus="True"
IsFocused="{Binding UserNameIsFocused, Mode=TwoWay}"/>
</i:Interaction.Behaviors>
</TextBox>