我使用WebAPi服务和WPF作为客户端。
添加项目并将其设置回来工作正常,但我无法弄清楚,这是编辑或删除所选项目的正确语法。
XAML代码
<DataGrid AutoGenerateColumns = "False" ItemsSource="{Binding Authors}" CanUserDeleteRows="True"
Name="lboxBooks" HorizontalAlignment="Left" Height="200" Margin="38,86,0,0"
VerticalAlignment="Top" Width="Auto" SelectionChanged="lboxBooks_SelectionChanged"
SelectionMode="Extended" SelectionUnit="FullRow">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding AuthorId, Mode=TwoWay}" x:Name="authorId">
</DataGridTextColumn>
<DataGridTextColumn Header="firstname" Binding="{Binding Firstname, Mode=TwoWay}" x:Name="firstnamecolumn">
</DataGridTextColumn>
<DataGridTextColumn Header="lastname" Binding="{Binding Lastname, Mode=TwoWay}" IsReadOnly="true" x:Name="lastnamecolumn">
</DataGridTextColumn>
<DataGridTextColumn Header="title" Binding="{Binding BookTitle, Mode=TwoWay}" IsReadOnly="true" x:Name="booktitlecolumn">
</DataGridTextColumn>
<DataGridTextColumn Header="Out" Binding="{Binding IsOut, Mode=TwoWay}" x:Name="outcolumn" IsReadOnly="False" >
</DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Margin="1,1,1,1" Content="Delete" Name="btnDelete" Click="Delete"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
代码背后:
public async Task<T> updateData<T>(string path, T obj)
{
HttpResponseMessage resp = this._client.PutAsJsonAsync(path, obj).Result;
return await resp.Content.ReadAsAsync<T>();
}
public async void updateData (Author author)
{
var result = await this._authorService.updateAuthor(author);
}
public void btnClickEdit(object sender, RoutedEventArgs e)
{
var selected = lboxBooks.SelectedItem;
_vm.updateData(selected); ?????????????
所以这就是我被卡住的部分,因为我收到了错误:
错误1最佳重载方法匹配&#39; LibraryClient.ViewModels.MainWindowVM.updateData(LibraryClient.Models.Author)&#39;有一些无效的论点
同样的事情是删除。似乎无法正确使用语法,因此所选行实际上会从DB中删除,而不仅仅是从WPF视图中删除。
答案 0 :(得分:0)
在var selected = lboxBooks.SelectedItem;
例如
Author a1 = (Author) lboxBooks.SelectedItem;