>伙计们!
我目前有这个带有 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;
}
视图模型.cs
public class ViewModel
{
HotelService.HotelServiceClient hotelServiceClient = new HotelService.HotelServiceClient();
public List<RoomModel> Rooms
{
get
{
return hotelServiceClient.GetRooms().ToList();
}
}
}
所以正如你们所看到的,我只是设置了这个。DataContext = viewModel 几乎通过纯粹的魔术,WPF 显示了房间的数据库列表。
但我的问题如下。无论如何,我可以使用网格视图/列表视图实现同样的事情吗?我尝试用这些对象替换 xaml,但随后它在窗口中没有显示任何内容。
奖励问题:是否无论如何可以根据事件/委托使用 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>