Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 能否将列表框与IEnumerable进行数据绑定<;类型>;_C#_Data Binding_Mvvm_Windows Phone 8_Listbox - Fatal编程技术网

C# 能否将列表框与IEnumerable进行数据绑定<;类型>;

C# 能否将列表框与IEnumerable进行数据绑定<;类型>;,c#,data-binding,mvvm,windows-phone-8,listbox,C#,Data Binding,Mvvm,Windows Phone 8,Listbox,我有以下xaml: <phone:PhoneApplicationPage.Resources> <DataTemplate x:Key="OrganisationTemplate"> <Grid Margin="40,0,0,0"> <StackPanel> <TextBlock Text="{Binding name}"></TextBlock&g

我有以下xaml:

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="OrganisationTemplate">
        <Grid Margin="40,0,0,0">
            <StackPanel>
                <TextBlock Text="{Binding name}"></TextBlock>
            </StackPanel>
        </Grid>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

        <phone:PanoramaItem Header="Organisations">
            <ListBox Name="Organisation" ItemTemplate="{StaticResource OrganisationTemplate}" DataContext="{Binding Organisations, Mode=OneWay}" Margin="0,0,0,96"/>
        </phone:PanoramaItem>

我想知道是否有约束力的“组织”需要是一个列表或ICollection或其他什么。。。或者它可以是一个IEnumerable。只是它现在不起作用

class DashboardViewModel
{
    private OrganisationRepository organisationRepository { get; set; }
    public IEnumerable<Organisation> Organisations { get; set; }

    public DashboardViewModel()
    {
        LoadOrganisationSection();
    }

    private async void LoadOrganisationSection()
    {
        organisationRepository = new OrganisationRepository();
        Organisations = await organisationRepository.GetAll();
        OnPropertyChanged("Organisations");
        //LoadBar loadBar = new LoadBar("Logging in");
        //loadBar.ShowLoadBar(this);
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler tempEvent = PropertyChanged;

        if (tempEvent != null)
        {
            // property changed
            tempEvent(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
类仪表板视图模型
{
私有组织存储库组织存储库{get;set;}
公共IEnumerable组织{get;set;}
公共仪表板视图模型()
{
LoadOrganizationSection();
}
私有异步void loadOrganizationSection()
{
OrganizationRepository=新的OrganizationRepository();
Organizations=等待OrganizationRepository.GetAll();
财产变更(“组织”);
//LoadBar LoadBar=新的LoadBar(“登录”);
//loadBar.ShowLoadBar(这个);
}
公共事件属性更改事件处理程序属性更改;
受保护的虚拟void OnPropertyChanged([CallerMemberName]字符串propertyName=null)
{
PropertyChangedEventHandler tempEvent=PropertyChanged;
if(tempEvent!=null)
{
//财产变更
tempEvent(这是新的PropertyChangedEventArgs(propertyName));
}
}
}
编辑:://

    public IEnumerable<Organisation> Organisations
    {
        get
        {
            return new Organisation[] { new Organisation { name = "hi" } };
        }
        set
        {
            OnPropertyChanged();
        }
    }
公共数字组织
{
得到
{
返回新组织[]{new organization{name=“hi”}};
}
设置
{
OnPropertyChanged();
}
}

如果我这样做,我会得到一些东西,所以是触发器不起作用。你知道我该怎么做吗?当我对OrganizationRepository.GetAll()的等待完成时。。我需要一次改变的发生和更新。doh

尝试将listbox绑定设置为ItemsSource,而不是设置其datacontext。(假设您的viewmodel已设置为视图的datacontext)

Argh,我将尝试一下!现在非常感谢(必须等到我回家看这一个)ItemsSource=“{Binding Organizations,Mode=OneWay}”不起作用。doh。但我假设ienumerable不是我设置的问题(Organizations=null强制属性更改:)