开发者

WPF DataGrid selecting disabled

In VS 2010/.NET 4.0, I have a List<MyClass> list of a simple class as such:

public class MyClass
{        
    public string String1 { get; set; }
    public string String2 { get; set; }

    public MyClass(string string1, string string2)
    {
        String1 = string1;
        String2 = string2;
    开发者_C百科}
}

This list is displayed in a WPF DataGrid in code behind:

Columns are added first:

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

Item source is set next:

myDataGrid.ItemsSource = ParentClass.MyClassess;

MyClassess is the List

This works fine in a sense that the DG gets populated but it is not possible to select a row in the DataGrid and DataGrid.SelectedItem always returns null. The DataGrid registers mouse events but where ever the click occurs no row gets selected as if the DataGrid is disabled...

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

Does anyone have any idea what is going on here?

TIA

Here is the XAML as requested:

<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>


The problem was that I was loading the DataGrid when it's parent Tab GotFocus event fired and this event was firing every time the DataGrid was clicked on.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜