在WPF中,我开始使用ReactiveUI一个短暂的时间空间是一个问题来找我,有可能通过我的MainViewModel把重点放在一个特定的控件上,它是否也可以使用条件?
欢迎举例,谢谢。
答案 0 :(得分:0)
这是ReactiveUI的方法(由于问题非常模糊,这是一般性答案)
public class MainViewModel
{
public ReactiveCommand Focusify { get; set; }
public MainViewModel()
{
Focusify = new ReactiveCommand();
}
}
public class MainView : UserControl, IViewFor<MainViewModel>
{
public MainView()
{
this.WhenAnyObservable(x => x.ViewModel.Focusify)
.Subscribe(_ => someControl.Focus());
}
}
答案 1 :(得分:0)
打蜡问题会显示我的答案。 我使用附加属性后果有我想要的行为。
MainView.xaml
<TextBox x:Name="txtUser" helper:FocusExtension.IsFocused="{Binding Path=IsUserFocus,Mode=TwoWay}" Text="{Binding Path=User,UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Margin="5" Width="400" HorizontalAlignment="Left" FontSize="14" controls:TextboxHelper.Watermark="User"/>
MainViewModel.cs
public MainViewModel()
{
this.WhenAny(vm => vm.IsUserFocus, x => false).Throttle(TimeSpan.FromSeconds(2)).Subscribe(x =>
{
IsUserFocus = true;
});
}
我使用了一个计时器,因为当我的应用程序启动时,它会执行动画,如果在结束之前设置焦点,那么白色的光标样式将不会运行,它将使其正常颜色为黑色。
非常感谢!