WPF编程,MVVM模式下控件获得焦点的一种方法。
程序员文章站
2022-07-13 22:25:10
...
MVVM模式下,ViewModel层无法直接控件View层的控件,这里通过为控件增加数据触发器的方法,让控件获得焦点。一般用于输入输出时让控件获得焦点。
1、前台控件
<TextBox Height="30" Name="txtUserName" Text="{Binding UserNme}">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding IsFocus}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=txtUserName}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
其中,IsFocus是VM层的一个布尔量,当为真时,TextBox控件获得当前的焦点,用于输入键盘直接输入数据。
需要注意的是,要为控件命名,在数据触发器中指定此控件名。
当控件使用Style或者Template重写了控件的结构时,这样设置可能会无效,此时需要进入到Template中去设置。
这里可参见另一个位网友提供的方法。
https://www.cnblogs.com/tommy-huang/p/5175948.html
<TextBox x:Name="txt" >
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Grid FocusManager.FocusedElement="{Binding ElementName=btn123}">
<Button x:Name="btn123" Content="123" Margin="10"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
</TextBox>
上一篇: Bootargs参数设置