小编Pet*_*ion的帖子

在 WPF 中绑定时,Visual Studio Intellisense 不建议源生成的属性

我没有收到 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)

c# data-binding wpf intellisense visual-studio-2022

5
推荐指数
1
解决办法
500
查看次数

ValueTask.Preserve() 的意义是什么?

ValueTask并ValueTask<TResult>有一个Preserve()方法概括为“获取可以在将来任何时候使用的 ValueTask”。

这是什么意思以及我们什么时候应该使用它?这是否意味着ValueTask“在未来的任何时候”都不能使用“正常”?如果是这样,为什么?

c# async-await valuetask

4
推荐指数
1
解决办法
693
查看次数