1

我制作了一个非常基本的 DataGrid 来测试它,但我立即遇到了这个问题,单击复选框对于前 2 次单击没有任何作用。看起来需要单击一下才能关闭它所在的位置,再单击一次才能聚焦,然后才能通过第三次单击实际检查它。

这是我正在使用的 DataGrid(https://xceed.com/xceed-datagrid-for-wpf/)。

GIF 显示问题

XAML:

<UserControl.Resources>
    <DataTemplate x:Key="ItemTemplate">
        <StackPanel>
            <TextBlock Text="{Binding Property1}"/>
            <CheckBox IsChecked="{Binding Property2}"/>
        </StackPanel>
    </DataTemplate>
</UserControl.Resources>
<Grid>
    <xcdg:DataGridControl ItemTemplate="{DynamicResource ItemTemplate}" 
                          ItemsSource="{Binding Collection, Source={StaticResource SampleDataSource1}}" 
                          UpdateSourceTrigger="CellContentChanged"
                          Margin="10">
    </xcdg:DataGridControl>
</Grid>

“SampleDataSource1”只是自动生成的,但无论如何它都在这里:

<SampleDataSource1:SampleDataSource1 xmlns:SampleDataSource1="clr-namespace:Expression.Blend.SampleData.SampleDataSource1">
<SampleDataSource1:SampleDataSource1.Collection>
    <SampleDataSource1:Item Property1="Cras aenean" Property2="True"/>
    <SampleDataSource1:Item Property1="Class mauris aliquam" Property2="False"/>
    <SampleDataSource1:Item Property1="Maecenas integer duis curae" Property2="True"/>
    <SampleDataSource1:Item Property1="Praesent nullam nunc" Property2="False"/>
    <SampleDataSource1:Item Property1="Nam quisque" Property2="True"/>
    <SampleDataSource1:Item Property1="Sed accumsan" Property2="False"/>
    <SampleDataSource1:Item Property1="Aptent vivamus aliquam aliquet" Property2="True"/>
    <SampleDataSource1:Item Property1="Blandit donec dis" Property2="False"/>
    <SampleDataSource1:Item Property1="Amet commodo" Property2="True"/>
    <SampleDataSource1:Item Property1="Ante conubia" Property2="False"/>
</SampleDataSource1:SampleDataSource1.Collection>

4

2 回答 2

0

在你的 dataGrid 上添加这个(在 xaml 中):

DataGridCell.GotFocus="DataGrid_GotFocus"  

并在后面的代码中添加:

private void DataGrid_GotFocus(object sender, RoutedEventArgs e)
{
    // Lookup for the source to be DataGridCell
    if (e.OriginalSource.GetType() == typeof(DataGridCell))
    {
        // Starts the Edit on the row;
        DataGrid grd = (DataGrid)sender;
        grd.BeginEdit(e);
    }
}
于 2017-08-16T12:59:10.757 回答
0

所以,如果你幸运的话,你会在设计窗口中看到一个巨大的飞溅,上面有一个按钮,上面写着:“显示配置窗口”(使用后它似乎永远消失了)。我生成了一些 XAML 来解决这个问题:

    <xcdg:DataGridControl ItemsSource="{Binding Source={StaticResource cvsSongs}}"
                          NavigationBehavior="RowOrCell" 
                          CellEditorDisplayConditions="RowIsBeingEdited, MouseOverCell, 
                          MouseOverRow, RowIsCurrent, CellIsCurrent" 
                          EditTriggers="BeginEditCommand, ClickOnCurrentCell, SingleClick, 
                          CellIsCurrent, ActivationGesture, RowIsCurrent"/>

如果您知道如何使该窗口再次出现,请随时发表评论。

配置窗口信息:Xceed 文档

还有其他一些有配置窗口问题的人。可能对你有用:xceed 论坛

于 2017-08-31T08:34:38.250 回答