4

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

但是,在被更改的ComboBox时候填充 es似乎有点笨拙。在单击“编辑”按钮之前,可以使用更轻的控件(例如 a ),然后可以将 s 换成es。SelectedItemDataGridTextBlockTextBlockComboBox

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

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

4

3 回答 3

3

这是优秀的文章

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

  1. 将以下样式粘贴到 DataGrid 的资源中
  2. 将方法粘贴到后面的代码中

仅对 DataGrid 中的某些单元格应用单击编辑

  1. 在样式上设置 x:Key(例如 )
  2. 将样式粘贴到 DataGrid 的资源中
  3. 将样式应用于您想要单击编辑的列的 CellStyle 属性(例如)
  4. 将方法粘贴到后面的代码中

    //
    // 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;
    } 
    
于 2009-06-12T12:05:54.483 回答
1

ContentTemplateSelector 属性应允许您根据当前模式(查看/编辑)选择一个或另一个模板

于 2009-06-03T23:20:27.380 回答
0

标记的答案链接已失效。

这可能会有所帮助: http ://wpf.codeplex.com/wikipage?title=Single-Click%20Editing

于 2012-12-16T12:40:10.737 回答