WPF DataGrid选择已禁用

时间:2010-09-01 20:21:11

标签: .net wpf wpfdatagrid

在VS 2010 / .NET 4.0中,我有一个简单类的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;

MyClassess是List

这样可以正常运行DG,但无法在DataGrid中选择行,DataGrid.SelectedItem始终返回null。 DataGrid注册了鼠标事件,但是在发生点击的地方没有选择任何行,就像DataGrid被禁用一样...

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

有谁知道这里发生了什么?

TIA

这是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 个答案:

答案 0 :(得分:0)

问题在于,当我的父Tab Gtf事件被触发时,我正在加载DataGrid,并且每次点击DataGrid时都会触发此事件。