专注于使用ReactiveUI进行控制?

时间:2014-01-19 00:13:48

标签: wpf reactiveui

在WPF中,我开始使用ReactiveUI一个短暂的时间空间是一个问题来找我,有可能通过我的MainViewModel把重点放在一个特定的控件上,它是否也可以使用条件?

欢迎举例,谢谢。

2 个答案:

答案 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;
        });           

    }

我使用了一个计时器,因为当我的应用程序启动时,它会执行动画,如果在结束之前设置焦点,那么白色的光标样式将不会运行,它将使其正常颜色为黑色。

非常感谢!