繁体   English   中英

具有CheckboxColumn的DataGrid不注册SelectedItem

[英]DataGrid with a CheckboxColumn does not register SelectedItem

我在WPF中有一个DataGrid。 它使用MVVM绑定到ViewModel。 它仅与DataGridTextColumns配合使用,可以显示有关我与DataGrid绑定的对象列表的信息。 单击一行将其选中,它也可以工作,并引发一系列事件,这些事件使我能够深入研究给定的行和派生的信息。

然后,我添加了一个DataGridCheckBoxColumn,以便可以选择项目并将它们从列表中删除(如果需要)。 但是,这破坏了一切。 请注意,ViewModel完全保持不变,DataGrid的SelectedItem事件现在似乎根本没有触发。 任何人都可以提供帮助,以便我仍然可以保留我的旧功能,但还可以保留我的复选框列,以帮助用户快速执行他/她需要做的事情?

相关XAML:

<DataGrid Name="ArticlesOverviewDataGrid" IsReadOnly="True" 
          ItemsSource="{Binding Project.Articles}"  IsSynchronizedWithCurrentItem="True" 
          Style="{StaticResource DataGridStyle}"  SelectionUnit="FullRow"
          AutoGenerateColumns="False"   SelectionMode="Single" 
          SelectedItem="{Binding SelectedArticle, Mode=TwoWay}">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Width="65" HeaderStyle="{StaticResource DgchStyle}" Binding="{Binding IsDuplicate, UpdateSourceTrigger=PropertyChanged}" Header="Duplicate" ElementStyle="{StaticResource DataGridCheckBoxColumnElementStyle}"/>
        <DataGridTextColumn Width="*" HeaderStyle="{StaticResource DgchStyle}" Binding="{Binding Name}" Header="Name" ElementStyle="{StaticResource DataGridTextColumnElementStyle}" />
        <DataGridTextColumn Width="*" HeaderStyle="{StaticResource DgchStyle}" Binding="{Binding Author}" Header="Author" ElementStyle="{StaticResource DataGridTextColumnElementStyle}" />
        <DataGridTextColumn Width="100" HeaderStyle="{StaticResource DgchStyle}" Binding="{Binding PublicationDate}" Header="Publication Date" ElementStyle="{StaticResource DataGridTextColumnElementStyle}"/>
    </DataGrid.Columns>
    <DataGrid.InputBindings>
        <MouseBinding Gesture="LeftDoubleClick" Command="{Binding ShowProject}"/>
    </DataGrid.InputBindings>
</DataGrid>

同样,如果我删除checkboxcolumn,这一切都可行,这意味着在DataGrid中选择一个项目会很麻烦,但是我似乎找不到任何有关为什么中断或如何解决此问题的信息。

<DataGridCheckBoxColumn Width="65" HeaderStyle="{StaticResource DgchStyle}" Binding="{Binding IsDuplicate, UpdateSourceTrigger=PropertyChanged}" Header="Duplicate" ElementStyle="{StaticResource DataGridCheckBoxColumnElementStyle}"/>

尝试使用模板列,并使用复选框将其设置为DataTemplate

        <DataGridTemplateColumn Width="65" HeaderStyle="{StaticResource DgchStyle}" Header="Duplicate" ElementStyle="{StaticResource DataGridCheckBoxColumnElementStyle}">
            <DataTemplate>
                <CheckBox IsChecked="{Binding IsDuplicate, UpdateSourceTrigger=PropertyChanged}" />
            </DataTemplate>
        </DataGridTemplateColumn>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM