设置XAML复选框的ID

时间:2018-07-02 15:37:33

标签: c# wpf xaml

我有一个从列表填充的数据网格。我添加了一些复选框,以便可以删除列表中的项目,但后来又不知道如何将ID / Gui附加到复选框,因此可以通过数据库ID#删除它们。最终,我添加了ID的新列,并尝试将其宽度设置为0,或者将其可见性设置为隐藏或折叠,但是如果该值不可见,则找不到ID。这是要填充的代码:

public void PopulateDataGrid()
{
    items = new List<CommandGridItems>();
    var serverCommandsList = ServerDB.ExecuteDB("SELECT * FROM commands where group_id = " + Config.groupId);
    var json = JsonConvert.SerializeObject(serverCommandsList);
    dynamic dynJson = JsonConvert.DeserializeObject(json);
    foreach (var command in dynJson)
    {
        items.Insert(items.Count, new CommandGridItems() { Delete = false, Command = command.command.ToString(), Response = command.expected_response.ToString(), Results = "", Command_ID = command.id.ToString() });
    }
    CommandRows2.ItemsSource = items;
    CommandRows2.Items.Refresh();

}

XAML:

<DataGrid Name="CommandRows2" Margin="0,36,0,73" AutoGenerateColumns="False" ScrollViewer.CanContentScroll="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="ID" Binding="{Binding Command_ID}" Width="0" x:Name="ID"/>
        <DataGridCheckBoxColumn Header="Delete" Binding="{Binding Delete}"  x:Name="Delete"/>
        <DataGridTextColumn Header="Command" Binding="{Binding Command}" Width="200"/>
        <DataGridTextColumn Header="Response" Binding="{Binding Response}" Width="*"/>
        <DataGridTextColumn Header="Test Results" Binding="{Binding Results}" Width="70"/>

    </DataGrid.Columns>
</DataGrid>

我尝试将属性附加到DataGridCheckBoxColumn,例如x:GuiDataContextx:XData等,但是找不到如何将ID附加到复选框,这样我就不必在视图中添加任何内容。

这是我用来删除的内容,同样,除非该列可见,否则它无法找到rowId的值。

private void Delete_Commands(object sender, RoutedEventArgs e)
{
    foreach (CommandGridItems item in CommandRows2.ItemsSource)
    {
        if (((CheckBox)Delete.GetCellContent(item)).IsChecked == true)
        {
            var rowId = ID.GetCellContent(item) as TextBlock;
            ServerDB.ExecuteDB("DELETE FROM commands where id = " + rowId.Text);
            PopulateDataGrid();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

当已经有数据项引用时,为什么还要打扰UI元素?在用户与UI互动(例如,单击CheckBoxes)之后,数据项的属性会通过绑定进行更新

htmlDoc.querySelector("#RatingsTable1 tr:last-child").innerText

如果ItemsSource是ObservableCollection,则无需重新加载所有数据就可以从其中删除项目(以及由于INotifyCollectionChanged而从DataGrid中删除项目)。