我没有收到 MVVM 社区工具包生成的属性的智能感知建议。有没有办法来解决这个问题?如果我无法让建议发挥作用,那么在[ObservableProperty]我看来,使用甚至不值得。下面的例子。
ViewModel 有一个源生成的属性和一个手工制作的属性:
public partial class SimplisticViewModel : ObservableObject
{
[ObservableProperty]
private int sourceGeneratedProperty;
private float handmadeProperty;
public float HandmadeProperty
{
get => handmadeProperty;
set => SetProperty(ref handmadeProperty, value);
}
}
Run Code Online (Sandbox Code Playgroud)
XAML:
<Window x:Class="WPFEFTest.TestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFEFTest"
mc:Ignorable="d"
Title="TestWindow" Height="450" Width="800">
<Window.DataContext>
<local:SimplisticViewModel/>
</Window.DataContext>
<StackPanel>
<TextBox Text=""/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
为手工制作的属性设置绑定时,建议有效:
为源生成的属性设置绑定时,没有建议:
但是,如果我写下整个属性名称(避免拼写错误等...)并将光标悬停在其上(光标在屏幕截图中不可见),智能感知将正确显示属性的类型。所以问题可能不在于智能感知根本没有“看到”该属性。
编辑:为了明确起见,我并没有尝试绑定到字段,下面是 MVVM 社区工具包由于该ObservableProperty属性而生成的代码:
public partial class SimplisticViewModel
{
[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Toolkit.Mvvm.SourceGenerators.ObservablePropertyGenerator", "7.1.0.0")]
[global::System.Diagnostics.DebuggerNonUserCode]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public int SourceGeneratedProperty
{
get => sourceGeneratedProperty;
set …Run Code Online (Sandbox Code Playgroud) ValueTask并ValueTask<TResult>有一个Preserve()方法概括为“获取可以在将来任何时候使用的 ValueTask”。
这是什么意思以及我们什么时候应该使用它?这是否意味着ValueTask“在未来的任何时候”都不能使用“正常”?如果是这样,为什么?