尝试对 Listview/Gridview 做与我对 DataGrid 所做的相同的事情
Trying to do same thing with Listview/Gridview as I'm doing with DataGrid
伙计们!
我目前有这个使用 WCF 和 LINQ 的 WPF 项目:
MainWindow.xaml
<GroupBox Header="Available Rooms" >
<DataGrid Name="roomDataGrid" ItemsSource="{Binding Rooms}" AutoGenerateColumns ="False" ">
<DataGrid.Columns>
<DataGridTextColumn Header="Room" Binding="{Binding RoomId}" />
<DataGridTextColumn Header="Reserved" Binding="{Binding RoomTaken}" />
<DataGridTextColumn Header="Beds" Binding="{Binding Beds}" />
<DataGridTextColumn Header="Size" Binding="{Binding Size}" />
<DataGridTextColumn Header="Rank" Binding="{Binding RoomRank}" />
</DataGrid.Columns>
</DataGrid>
</GroupBox>
MainWindow.xaml.cs
public MainWindow()
{
InitializeComponent();
viewModel = new ViewModel();
this.DataContext = viewModel;
}
ViewModel.cs
public class ViewModel
{
HotelService.HotelServiceClient hotelServiceClient = new HotelService.HotelServiceClient();
public List<RoomModel> Rooms
{
get
{
return hotelServiceClient.GetRooms().ToList();
}
}
}
正如你们所见,我只是设置了 this.DataContext = viewModel 并且几乎通过纯粹的 Magic,WPF 显示了房间的数据库列表。
但我的问题如下。无论如何我可以使用 GridView/Listview 实现同样的事情吗?我尝试用这些对象替换 xaml,但是 window 中没有显示任何内容。
额外的问题:有没有根据events/delegates使用GridView/ListView,这样我就可以将房间保存到数据库并更新视图,并在有时更新视图不是由该 WPF 引起的对数据库所做的更改?
希望我提供了足够的信息!提前致谢:)
试试这个:
<GroupBox Header="Available Rooms" >
<ListView Name="roomDataGrid" ItemsSource="{Binding Rooms}" >
<ListView.View>
<GridView>
<GridViewColumn Header="Room" DisplayMemberBinding="{Binding RoomId}" />
<GridViewColumn Header="Reserved" DisplayMemberBinding="{Binding RoomTaken}" />
<GridViewColumn Header="Beds" DisplayMemberBinding="{Binding Beds}" />
<GridViewColumn Header="Size" DisplayMemberBinding="{Binding Size}" />
<GridViewColumn Header="Rank" DisplayMemberBinding="{Binding RoomRank}" />
</GridView>
</ListView.View>
</ListView>
伙计们!
我目前有这个使用 WCF 和 LINQ 的 WPF 项目:
MainWindow.xaml
<GroupBox Header="Available Rooms" >
<DataGrid Name="roomDataGrid" ItemsSource="{Binding Rooms}" AutoGenerateColumns ="False" ">
<DataGrid.Columns>
<DataGridTextColumn Header="Room" Binding="{Binding RoomId}" />
<DataGridTextColumn Header="Reserved" Binding="{Binding RoomTaken}" />
<DataGridTextColumn Header="Beds" Binding="{Binding Beds}" />
<DataGridTextColumn Header="Size" Binding="{Binding Size}" />
<DataGridTextColumn Header="Rank" Binding="{Binding RoomRank}" />
</DataGrid.Columns>
</DataGrid>
</GroupBox>
MainWindow.xaml.cs
public MainWindow()
{
InitializeComponent();
viewModel = new ViewModel();
this.DataContext = viewModel;
}
ViewModel.cs
public class ViewModel
{
HotelService.HotelServiceClient hotelServiceClient = new HotelService.HotelServiceClient();
public List<RoomModel> Rooms
{
get
{
return hotelServiceClient.GetRooms().ToList();
}
}
}
正如你们所见,我只是设置了 this.DataContext = viewModel 并且几乎通过纯粹的 Magic,WPF 显示了房间的数据库列表。
但我的问题如下。无论如何我可以使用 GridView/Listview 实现同样的事情吗?我尝试用这些对象替换 xaml,但是 window 中没有显示任何内容。
额外的问题:有没有根据events/delegates使用GridView/ListView,这样我就可以将房间保存到数据库并更新视图,并在有时更新视图不是由该 WPF 引起的对数据库所做的更改?
希望我提供了足够的信息!提前致谢:)
试试这个:
<GroupBox Header="Available Rooms" >
<ListView Name="roomDataGrid" ItemsSource="{Binding Rooms}" >
<ListView.View>
<GridView>
<GridViewColumn Header="Room" DisplayMemberBinding="{Binding RoomId}" />
<GridViewColumn Header="Reserved" DisplayMemberBinding="{Binding RoomTaken}" />
<GridViewColumn Header="Beds" DisplayMemberBinding="{Binding Beds}" />
<GridViewColumn Header="Size" DisplayMemberBinding="{Binding Size}" />
<GridViewColumn Header="Rank" DisplayMemberBinding="{Binding RoomRank}" />
</GridView>
</ListView.View>
</ListView>