- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试学习 ReactiveUI,所以我正在制作示例应用程序,但我在使用 InvokeCommand
时遇到问题。基本上每次 SearchPhrase
属性更改时,我的 ShowSearchPhraseCommand
都应该被调用。
这是我的看法:
<StackPanel Grid.Column="1" Grid.Row="1" Orientation="Horizontal"
VerticalAlignment="Center" >
<TextBox Width="100" Height="20"
Text="{Binding Path=SearchPhrase, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
View 模型:
public ReactiveCommand ShowSearchPhraseCommand { get; private set; }
string _searchPhrase;
public string SearchPhrase
{
get { return _searchPhrase; }
set { this.RaiseAndSetIfChanged(ref _searchPhrase, value); }
}
public SecondViewModel(IScreen hostScreen)
{
HostScreen = hostScreen;
// Commands
ShowSearchPhraseCommand = ReactiveCommand.Create(() => ShowSearchPhraseCommandHandler(SearchPhrase));
// WhenAny
this.WhenAnyValue(x => x.SearchPhrase).Where(x => !string.IsNullOrWhiteSpace(x)).InvokeCommand(ShowSearchPhraseCommand);
}
private void ShowSearchPhraseCommandHandler(string searchPhrase)
{
Debug.WriteLine($"Phrase: {searchPhrase}");
}
这是我的问题:
最佳答案
该命令需要一个 Unit
:
this.WhenAnyValue(x => x.SearchPhrase)
.Where(x => !string.IsNullOrWhiteSpace(x))
.Select(_ => System.Reactive.Unit.Default) //<--
.InvokeCommand(ShowSearchPhraseCommand);
...除非您将其定义为 ReactiveCommand<string, Unit>
:
public ReactiveCommand<string, System.Reactive.Unit> ShowSearchPhraseCommand { get; private set; }
...
ShowSearchPhraseCommand = ReactiveCommand.Create<string>(ShowSearchPhraseCommandHandler);
关于c# - WPF - ReactiveUI InvokeCommand 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46378248/
我正在尝试学习 ReactiveUI,所以我正在制作示例应用程序,但我在使用 InvokeCommand 时遇到问题。基本上每次 SearchPhrase 属性更改时,我的 ShowSearchPhr
我有一个TListView,它的项目是文件,用户可以通过双击打开这些文件。 为此,我将文件保存在 Windows 临时文件夹中,启动一个线程以使用 ShellExecuteEx() 打开保存的文件,并
我正在使用代理功能,我想完全理解我正在查看的所有代码。 鉴于这种: $MetaData = New-Object System.Management.Automation.CommandMetaDat
好的,我已经编写了一个在 Windows 8 中完美运行的脚本。我切换到 Windows 7 并获得了各种血液。经过一番调试,我发现了问题所在。 Win 8 使用 PowerShell 3.0,Win
我有以下代码来删除文件。此代码在 winXP 上运行良好。但是当我在 Windows 7 上运行时,它不会删除该文件。执行 InvokeCommand 语句时,我得到错误代码 0x80270000。
在我的 IContextMenu 实现中COM 服务器,QueryContextMenu被调用(可以通过日志查看)但是 InvokeCommand没有。这是 QueryContextMenu: HRE
我已经使用 COM 创建了一个 windows 的 shell 扩展,但是我似乎无法正确匹配我在 IContextMenu::QueryContextMenu 的重载中添加的项目的 ID使用我在 IC
我有一个脚本如下 [string]$newValue = Get-ConfigurationByType $setting.Value 在这一行之后,$newValue 的值是 "http://ST-
我的 shell 扩展代码在 Windows 7 下运行良好。但是,在Windows server 2008x64或windows 7x64中,当Selected Files的数量超过16个时,调用的
我是一名优秀的程序员,十分优秀!