【问题标题】:Visibility to Reacticve UIReacticve UI 的可见性
【发布时间】:2020-05-23 08:48:01
【问题描述】:

在 xaml 中,我使用 Prism 有类似的东西。

<Grid>
  <TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    <TextBlock Text="{Binding Greeting, Mode=OneWay}" Visibility="{Binding GreetingVisibility}"/>
</Grid>

和这样的 ViewModel。

private string _name;
public string Name{
                      get=>_name;
                      set{
                            SetProperty(ref _name, value);
                            RaisePropertyChanged(nameof(Greeting));
                            RaisePropertyChanged(nameof(GreetingVisibility));
                          }
                   }
public string Greeting{
                      get=> "Hello " + _name;
                      }
public Visibility GreetingVisibility=>string.IsNullOrEmpty(name)?Visibility.Collapsed:Visibility.Visible;

请问如何使用 ReactiveUI 制作类似的东西。

【问题讨论】:

    标签: mvvm reactive-programming prism reactiveui


    【解决方案1】:

    您可以使用WhenAnyValueObservableAsPropertyHelper 的组合。

    您可以设置属性助手来处理可见性并绑定到视图。每当名称更改时,此 observable 都会打勾并更新。

    类似下面的东西

    ObservableAsPropertyHelper<bool> _greetingVisibility;
    
    _greetingVisibility =
        this.WhenAnyValue(x => x.Name)
            .Select(x => string.IsNullOrEmpty(x))
            .StartsWith(false)
            .DistinctUntilChanged()
            .ToProperty(this, nameof(GreetingVisibility));
    
    public bool GreetingVisibility => _greetingVisibility;
    

    【讨论】:

      猜你喜欢
      • 2019-03-14
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 2012-05-10
      • 2013-06-14
      相关资源
      最近更新 更多