gpt4 book ai didi

wpf - 将可见性绑定(bind)到 ReactiveCommand CanExecute

转载 作者:行者123 更新时间:2023-12-04 21:10:50 24 4
gpt4 key购买 nike

我的 xaml ( 在此示例中仅显示 2 ) 中有几个 Tiles (TileLayoutControl Class),其可见性绑定(bind)到 bool 属性并通过 BooleanToVisibilityConverter 进行转换。
这工作得很好。我的问题是

我可以将可见性绑定(bind)到命令,以便我可以消除对这几个 bool 属性的需要吗?

类似于将可见性绑定(bind)到 Command.CanExecute

如果是,我该如何实现?任何帮助将不胜感激!谢谢。

<dxlc:Tile Command="{Binding Tile1Command}"
Visibility="{Binding Path=IsTile1Visible , Converter={StaticResource BooleanToVisibilityConverter}}"/>
<dxlc:Tile Command="{Binding Tile2Command}"
Visibility="{Binding Path=IsTile2Visible , Converter={StaticResource BooleanToVisibilityConverter}}"/>

View 模型
private bool _isTile1Visible;
public bool IsTile1Visible
{
get { return _isTile1Visible; }
set { this.RaiseAndSetIfChanged(ref _isTile1Visible, value); }
}

public ReactiveCommand Tile1Command { get; private set; }

Tile1Command = new ReactiveCommand();
Tile1Command.Subscribe(p => PerformTile1Operation());

最佳答案

是的,只需使用 RxUI 绑定(bind):

<dxlc:Tile x:Name="Tile1" />

然后在您的 View 构造函数中(确保实现 IViewFor<Tile1ViewModel> 以获取此扩展):
this.BindCommand(ViewModel, x => x.Tile1Command);

this.WhenAnyObservable(x => x.ViewModel.Tile1Command.CanExecuteObservable)
.BindTo(this, x => x.Tile1.Visibility);

您也可以在 ViewModel 级别解决此问题,尽管我不会这样做 - 在 ViewModel ctor 中:
Tile1Command = new ReactiveCommand(/* ... */);
Tile1Command
.Select(x => x ? Visibility.Visible : Visibility.Collapsed)
.ToProperty(this, x => x.Tile1Visibility, out tile1Visibility);

关于wpf - 将可见性绑定(bind)到 ReactiveCommand CanExecute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com