Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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# WPF网格中包含多列的ItemSource绑定_C#_Wpf_Mvvm - Fatal编程技术网

C# WPF网格中包含多列的ItemSource绑定

C# WPF网格中包含多列的ItemSource绑定,c#,wpf,mvvm,C#,Wpf,Mvvm,我在学习遵循MVVM模式的WPF时,在XAML中遇到了一个问题,我将ItemSource绑定到一个网格中。目前,我正在将每个列绑定到模型中存在的一个公共属性,该属性运行良好 我遇到的问题是,我也不知道如何绑定Grids ItemSource,因为之前我已经将其绑定到了一个属性,但是当执行此操作时,它将只显示该属性的数据,是否有一种方法可以绑定它以便显示两列的数据。 谢谢 主窗口.Xaml <ListView Name="UserGrid" Grid.Row="1" Margin="

我在学习遵循MVVM模式的WPF时,在XAML中遇到了一个问题,我将ItemSource绑定到一个网格中。目前,我正在将每个列绑定到模型中存在的一个公共属性,该属性运行良好

我遇到的问题是,我也不知道如何绑定Grids ItemSource,因为之前我已经将其绑定到了一个属性,但是当执行此操作时,它将只显示该属性的数据,是否有一种方法可以绑定它以便显示两列的数据。 谢谢

主窗口.Xaml

    <ListView Name="UserGrid" Grid.Row="1" Margin="4,178,12,13"  ItemsSource="{Binding ClientRatesPreAwr}"  >
        <ListView.View>
            <GridView x:Name="grdTest">
                <GridViewColumn Header="PreAWR" DisplayMemberBinding="{Binding ClientRatesPreAwr}"  Width="50"/>
                <GridViewColumn Header="PostAWR" DisplayMemberBinding="{Binding ClientRatesPostAwr}"  Width="50"/>
            </GridView>
        </ListView.View>
    </ListView>

ListView ItemSource应该绑定到模型/视图模型中的(ClientRates?)项集合,而不是单个属性。

您必须将ListView绑定到一个
ObservableCollection

<ListView Name="Items" ItemsSource={Binding Items}>
    <ListView.View>
        <GridView>
            <GridViewColumn Width="200" Header="First name" DisplayMemberBinding="{Binding FirstName}"></GridViewColumn>
            <GridViewColumn Width="200" Header="Last name" DisplayMemberBinding="{Binding LastName}"></GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

private ObservableCollection<Contact> items;
public ObservableCollection<Contact> Items
{
    get { return items; }
    set
    {
        if (value != items)
        {
            items = value;
            NotifyOfPropertyChange(() => Items);
        }
    }
}

私人可观测收集项目;
公共可观测收集项目
{
获取{返回项;}
设置
{
如果(值!=项目)
{
项目=价值;
财产变更通知(()=>项);
}
}
}

此外,我建议使用Caliburn.Micro MVVM框架。它使用方便、舒适。这里是用于应用Caliburn.Micro的

项资源应该绑定到模型对象的集合,最好是
可观测集合
<ListView Name="Items" ItemsSource={Binding Items}>
    <ListView.View>
        <GridView>
            <GridViewColumn Width="200" Header="First name" DisplayMemberBinding="{Binding FirstName}"></GridViewColumn>
            <GridViewColumn Width="200" Header="Last name" DisplayMemberBinding="{Binding LastName}"></GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

private ObservableCollection<Contact> items;
public ObservableCollection<Contact> Items
{
    get { return items; }
    set
    {
        if (value != items)
        {
            items = value;
            NotifyOfPropertyChange(() => Items);
        }
    }
}