gpt4 book ai didi

WPF DataGrid 在 View 模式和编辑模式之间切换模板

转载 作者:行者123 更新时间:2023-12-04 20:52:55 24 4
gpt4 key购买 nike

如果有 WPF DataGrid在窗口左侧,右侧有一个区域用于显示所选记录。所选记录由 Textbox 组成es 和 ComboBox在单击编辑按钮之前禁用的 es。一切都按预期工作。

但是,填充 ComboBox 似乎有点笨拙。 es 当 SelectedItemDataGrid正在改变。更轻的控件,例如 TextBlock可以使用直到单击编辑按钮,然后 TextBlock可以为 ComboBox 关闭 s es.

我确信这可以通过某种模板来完成,但是当我尝试对此进行试验时,所有与 ComboBox 相关的事件都发生了。 es 报告错误,因为它们不再存在,因为它们已在“查看模式”中被 TextBlocks 替换。

我可能会解决这个错误,所以一些指导将不胜感激。

最佳答案

这里很棒article

将单击编辑应用于 DataGrid 中的所有单元格

  • 将下面的样式粘贴到 DataGrid 的资源中
  • 将该方法粘贴到后面的代码中

  • 仅对 DataGrid 中的某些单元格应用单击编辑
  • 在样式上设置 x:Key(例如)
  • 将样式粘贴到 DataGrid 的资源中
  • 将样式应用于您希望单击编辑的列的 CellStyle 属性(例如)
  • 将方法粘贴到后面的代码中




    //
    // SINGLE CLICK EDITING
    //
    private void DataGridCell_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
    DataGridCell cell = sender as DataGridCell;
    if (cell != null && !cell.IsEditing && !cell.IsReadOnly)
    {
    if (!cell.IsFocused)
    {
    cell.Focus();
    }
    DataGrid dataGrid = FindVisualParent<DataGrid>(cell);
    if (dataGrid != null)
    {
    if (dataGrid.SelectionUnit != DataGridSelectionUnit.FullRow)
    {
    if (!cell.IsSelected)
    cell.IsSelected = true;
    }
    else
    {
    DataGridRow row = FindVisualParent<DataGridRow>(cell);
    if (row != null && !row.IsSelected)
    {
    row.IsSelected = true;
    }
    }
    }
    }
    }

    static T FindVisualParent<T>(UIElement element) where T : UIElement
    {
    UIElement parent = element;
    while (parent != null)
    {
    T correctlyTyped = parent as T;
    if (correctlyTyped != null)
    {
    return correctlyTyped;
    }

    parent = VisualTreeHelper.GetParent(parent) as UIElement;
    }
    return null;
    }
  • 关于WPF DataGrid 在 View 模式和编辑模式之间切换模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/944939/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com