2014-01-19 36 views
3

在WPF中,我開始使用ReactiveUI很短的時間空間是一個問題,我可以通過我的MainViewModel將重點放在一個特定的控件上,也可以使用條件嗎?專注於使用ReactiveUI進行控制?

歡迎舉例,謝謝。

+1

您可以使用附加屬性來控制視圖模型的焦點。看到這裏例如:http://stackoverflow.com/a/1356781/1001985 – McGarnagle

+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()); 
    } 
} 
+0

感謝Paul和McGarnagle附加的屬性將解決我的問題。我只是認爲,當我們發送一條消息,你可以控制,在視圖模型中接收它,ReactiveUI必須做類似MVVMLight的事情。 –

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

    } 

我用了一個定時器,因爲當我的應用程序啓動時,它執行的動畫,如果之前將焦點設置結束光標是風格白色不會運行它將會得到它的正常顏色是黑色的。

非常感謝!