如何使用WPF客户端编辑(放置)和删除项目

时间:2015-11-29 23:44:58

标签: c# wpf datagrid asp.net-web-api

我使用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视图中删除。

1 个答案:

答案 0 :(得分:0)

var selected = lboxBooks.SelectedItem;

中将选定项目投放到您的Bindable类型

例如

Author a1 = (Author) lboxBooks.SelectedItem;
相关问题