【发布时间】:2016-11-27 04:43:40
【问题描述】:
我正在开发一个 WPF 应用程序,我需要在其中只向那些在 DataGrid 中选中的联系人发送 SMS。
在 DataGrid 中检查了所需的联系人后,我在向下/向上滚动时遇到了问题。 DataGrid 中复选框的选中属性会随机更改。
我遇到了一些建议添加以下属性的解决方案:
- DataGrid 中的 VirtualizingStackPanel.VirtualizationMode="Standard"
- DataGrid 中的 VirtualizingStackPanel.IsVirtualizing="True"(当我将其设置为 False 时,应用程序完全没有响应)
- CheckBox 绑定中的 UpdateSourceTrigger="PropertyChanged"
- DataGrid 中的 EnableRowVirtualization="True"
- DataGrid 中的 EnableColumnVirtualization="True"
我都试过了,但都没有奏效。
XAML:
<StackPanel Orientation="Horizontal">
<DataGrid x:Name="smsgrid" VirtualizingStackPanel.VirtualizationMode="Standard" VirtualizingStackPanel.IsVirtualizing="True" Margin="10,20,0,10" AutoGenerateColumns="False" IsReadOnly="True" CanUserResizeColumns="False" CanUserReorderColumns="False" CanUserSortColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="chkbox" Checked="chkbox_Checked" Unchecked="chkbox_Checked"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"></DataGridTextColumn>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn>
<DataGridTextColumn Header="Mobile no." Binding="{Binding Mobile1}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
...
<StackPanel>
如果选中相应的复选框,我正在使用 StackPanel 水平堆叠登录页面(未粘贴在上述 XAML 中)和存储手机号码的列表。我还注意到,随着复选框的选中属性值的变化,列表中的值保持不变。
如果我能找到一个解决方案来避免自动选中和取消选中 DataGrid 中的复选框,那就太好了。
谢谢!
【问题讨论】:
标签: c# wpf xaml checkbox datagrid