为什么我不能在我在 ViewModel 中声明的后端 C# 中填充数组?

我的 VM 中有此代码,它运行正常:


public ParamViewModel[] CardChoice { get; set; } = new[] 

    {

        new ParamViewModel { Id = 0, Name = CC.All.ShortText(), IsSelected = false, 

            BackgroundColor="#FFFFFF", TextColor="#999999", BorderColor="#999999" },

        new ParamViewModel { Id = 1, Name = CC.Catg.ShortText(), IsSelected = false, 

            BackgroundColor="#FFFFFF", TextColor="#999999" , BorderColor="#999999" },

    };

我把它改成这样,因为我认为我不应该在 VM 中填充数据,但它似乎没有按预期工作:


虚拟机


public ParamViewModel[] CardChoice { get; set; }

C# 后端


vm.CardChoice = new[] 

    {

        new ParamViewModel { Id = 0,  Name = CC.All.ShortText(),   IsSelected = false, 

            BackgroundColor="#FFFFFF", TextColor="#999999" , BorderColor="#999999" },

        new ParamViewModel { Id = 1,  Name = CC.Catg.ShortText(),  IsSelected = false, 

            BackgroundColor="#FFFFFF", TextColor="#999999" , BorderColor="#999999" }

    };

但是现在在使用这些数据作为后端的控件中什么也没有出现。我在后端填充数据的方式有问题吗?


月关宝盒
浏览 183回答 1
1回答

郎朗坤

更改您的 VM 代码,如下所示。当您在渲染 UI 之后的阶段分配属性时,您必须使用INotifyPropertyChanged来告诉渲染器重新渲染public class YourVM : INotifyPropertyChanged{    public event PropertyChangedEventHandler PropertyChanged;    protected virtual void OnPropertyChanged(string propertyName)    {        PropertyChangedEventHandler handler = PropertyChanged;        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));    }    private ParamViewModel[] cardChoice;    public ParamViewModel[] CardChoice    {        get { return cardChoice; }        set         {             cardChoice = value;            OnPropertyChanged("CardChoice")        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP