代码之家  ›  专栏  ›  技术社区  ›  Buck Hicks

我在多层应用程序中使用Community.Toolkit.MVVM中的Source Generator时遇到问题

  •  0
  • Buck Hicks  · 技术社区  · 2 年前

    我正在使用微软的社区工具包创建一个多层WPF应用程序。我的问题是,我想使用工具包中的源生成器,但这需要ViewModel位于分部类中。因此,例如,下面的View和ViewModel的工作方式如图所示。当我的ViewModel需要是分部类而不是公共类时,我该如何做同样的事情?

    视图:

    <Window x:Class="PlantWorks.FirstPart.MainView"
            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:v="clr-namespace:PlantWorks.FirstPart"
            xmlns:vm="clr-namespace:PlantWorks.Biz.FirstPart;assembly=PlantWorks.Biz"
            mc:Ignorable="d"
            Title="MainView" Height="450" Width="800">
    
        <Window.DataContext>
            <vm:MainViewModel />
        </Window.DataContext>
    
        <Grid>
            <TextBlock Text="{Binding SampleText}" FontSize="24" />
        </Grid>
    </Window>
    

    ViewModel:

    //[ObservableObject]
    public class MainViewModel : ObservableObject
    {
        string sampleText = "Hello World";
        //[ObservableProperty] private string sampleText = "Hello World!!!";
        public string SampleText
        {
            get => sampleText;
            set
            {
                if (sampleText == value)
                {
                    return;
                }
    
                sampleText = value;
                OnPropertyChanged();
            }
        }
    }
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Julian    2 年前

    您的ViewModel可以是 public partial class MainViewModel : ObservableObject :

    public partial class MainViewModel : ObservableObject
    {
        [ObservableProperty] private string sampleText = "Hello World!!!";
    }
    

    源生成器生成类的其他部分。

    你不需要 [ObservableObject] 属性

    您仍然可以在XAML中引用ViewModel,因为您已经有了它。

    推荐文章