Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MVVM在WP7中聚焦文本框?_C#_Silverlight_Windows Phone 7_Mvvm_Mvvm Light - Fatal编程技术网

C# 如何使用MVVM在WP7中聚焦文本框?

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,

这个问题已经被问了好几次,不幸的是答案只适用于WPF。有人知道如何在silverlight中实现这一点吗?基本上,我需要关注代码中的某个文本框。

我已经成功地使用了这种方法

公共类焦点行为:行为
{
受保护的覆盖无效附加()
{
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>