为什么我的xaml数据绑定中的数组是空的,并说它不是对象的示例?

s1ag04yj  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(148)

在我的mixingPage xaml文件中,我试图将标签的文本内容设置为一个值。(抽象类)和一个具有effectItem数组的效果。当我试图从effectItem中的数组获取数据时,问题发生了。从effect数组中检索数据工作正常。无论我尝试从effectItem数组中获取哪个数据,不管效果是否抽象。
mixingPage xaml代码:

<Label Grid.Column="0"
Text="{Binding Effects[0].EffectItems.Length}"
VerticalOptions="Center"
Margin="10,0" />

字符串
导航到此页面的代码:

Song song = new Song
{
    Effects = new List<Effect>
    {
        new Equalizer
        {
            EffectItems = new[]
            {
                new EffectItem { Name = "Low", Min = 1, Max = 0, Value = 5 }
            }
        }
    },
};

var mixingPage = new MixingPage();
mixingPage.BindingContext = song;
Navigation.PushAsync(mixingPage);


但它总是给出错误:

0>MixingPage.xaml: Error  XamlC: Object reference not set to an instance of an object.


我正在使用.NET Maui 6.0
我希望沿着“{Binding Effects[0]. BindItems [0].Value}”行写一些东西,并返回存储在效果项中的值。
我试着从类中删除“抽象”,并将其作为一个独立的类使用,我试着以所有不同的方式初始化导航中的类,将数组改为列表。无论如何,它总是给出错误。

Edit我忘了指定你在歌曲中看到的Anchizer类是一个扩展Effect抽象类的类。

nfg76nw0

nfg76nw01#

<Label Grid.Column="0"
Text="{Binding Effects[0].EffectItems.Length}"
VerticalOptions="Center"
Margin="10,0" />

字符串
根据你上面发布的代码,我发现Song的数据结构应该是错误的。在示例化的类Song内部创建类Equalizer的对象是不合理的。
如果类Song.cs的结构是这样的,就不会有错误。

public class Song
{
    public List<Effect> Effects { get; set; }

}

public class Effect
{
    //public Equalizer equalizer { get; set; }

    public EffectItem[] EffectItems { get; set; }
}

public class EffectItem
{
    public string Name { get; set; }
    public int Min { get; set; }
    public int Max { get; set; }
    public int Value { get; set; }
}


我们还需要在导航到页面MixingPage时更改数据,如下所示:

private void OnButtonClicked(object sender, EventArgs e)
    {

        Song song = new Song
        {  
             // adjust code like this 
            Effects = new List<Effect>
            {
                new Effect
               {
                EffectItems = new[]
               {
                 new EffectItem { Name = "Low", Min = 1, Max = 0, Value = 5 }
               }
            }

            },
        };

        var mixingPage = new MixingPage();
        mixingPage.BindingContext = song;
        Navigation.PushAsync(mixingPage);
    }

eaf3rand

eaf3rand2#

所以我想我找到了一种解决方法。我改变了Effect类,使其只有一个带有“category”字符串的字段,而不是属于效果的effectItem。这不是我希望它工作的方式,但我已经做了大约一个星期了,没有结果。

相关问题