代码之家  ›  专栏  ›  技术社区  ›  Dean Kuga

WPF数据网格选择已禁用

  •  0
  • Dean Kuga  · 技术社区  · 15 年前

    List<MyClass> 简单类的列表:

    public class MyClass
    {        
        public string String1 { get; set; }
        public string String2 { get; set; }
    
        public MyClass(string string1, string string2)
        {
            String1 = string1;
            String2 = string2;
        }
    }
    

    此列表显示在WPF中 DataGrid 在代码隐藏中:

    首先添加列:

    List<DataGridColumn> cols = ParentClass.GetColumns();
    foreach (DataGridColumn dgc in cols)
    {
        myDataGrid.Columns.Add(dgc);
    }
    

    myDataGrid.ItemsSource = ParentClass.MyClassess;
    

    我的女同学在名单上

    从某种意义上说,这可以很好地工作,因为DG会被填充,但不可能在DataGrid中选择一行并 DataGrid.SelectedItem 总是返回null。DataGrid注册鼠标事件,但每次单击都不会选择任何行,就像DataGrid被禁用一样。。。

    SelectionMode="Single"  
    SelectionUnit="FullRow" 
    IsReadOnly="False"
    

    短暂性脑缺血发作

    以下是所需的XAML:

    <TabItem Header="Sessions" GotFocus="TabSessionsGotFocus">
                        <Grid>
                            <Grid.RowDefinitions>                            
                                <RowDefinition Height="*"></RowDefinition>                            
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition></ColumnDefinition>
                                <ColumnDefinition></ColumnDefinition>
                                <ColumnDefinition></ColumnDefinition>
                            </Grid.ColumnDefinitions>
    
                            <DockPanel Grid.Row="0" Grid.ColumnSpan="3" Margin="0">
                                <DataGrid x:Name="dgSessions" DockPanel.Dock="Top" IsEnabled="True" AutoGenerateColumns="False" 
                                    SelectionMode="Single"  SelectionUnit="FullRow" Background="WhiteSmoke" 
                                    AlternatingRowBackground="Gainsboro" GridLinesVisibility="None" IsReadOnly="False"
                                    ColumnHeaderHeight="25" RowHeight="21" MouseRightButtonDown="SessionsRightButtonDown" >
                                    <DataGrid.ContextMenu>
                                        <ContextMenu x:Name="cmSessions">
                                            <MenuItem x:Name="miSessionActions">
                                                Action
                                            </MenuItem>                                        
                                        </ContextMenu>
                                    </DataGrid.ContextMenu>
                                </DataGrid>
                            </DockPanel>
                        </Grid>
                    </TabItem>
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Dean Kuga    15 年前

    问题是我在加载DataGrid时触发了其父选项卡GotFocus事件,每次单击DataGrid时都会触发此事件。