C# WPF Radiobutton在数据网格中滚动后失去状态
我有一个wpf应用程序,它有一个充满问题的datagrid。每个问题有两组单选按钮(好的、更好的、最好的;不重要的、重要的、最重要的)。大约有200个问题填充到网格中,大约15-20个问题显示出来,而不需要滚动。我已经把逻辑降低到允许选择单选按钮的程度,但是当我滚动时,对象失去了焦点,没有保留答案C# WPF Radiobutton在数据网格中滚动后失去状态,c#,wpf,datagrid,scroll,virtualization,C#,Wpf,Datagrid,Scroll,Virtualization,我有一个wpf应用程序,它有一个充满问题的datagrid。每个问题有两组单选按钮(好的、更好的、最好的;不重要的、重要的、最重要的)。大约有200个问题填充到网格中,大约15-20个问题显示出来,而不需要滚动。我已经把逻辑降低到允许选择单选按钮的程度,但是当我滚动时,对象失去了焦点,没有保留答案 基本上,我可以回答前20个问题,但当我向下滚动时,由于datagrid的虚拟化,我会丢失答案。我试着把它关掉,但是应用程序需要很长时间才能加载,排序也就不见了。我必须把它打开。有人知道如何在滚动后保持
基本上,我可以回答前20个问题,但当我向下滚动时,由于datagrid的虚拟化,我会丢失答案。我试着把它关掉,但是应用程序需要很长时间才能加载,排序也就不见了。我必须把它打开。有人知道如何在滚动后保持单选按钮的状态吗?问题可能是您没有将单选按钮的状态绑定到相关的视图模型。因此,当UI刷新时,此状态将不会保存并丢失。尝试应用双向绑定 禁止单选按钮与虚拟化一起使用。尝试使用StackPanel:
<DataGrid x:Name = "MyDataGrid" ItemsSource="{Binding Objects}">
<DataGrid.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</DataGrid.ItemsPanel>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}"/>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Center">
<RadioButton Content="Yes" IsChecked="{Binding Checked, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"/>
<RadioButton Content="No" IsChecked="{Binding Checked, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource BoolInverterConverter}, Mode=TwoWay}"/>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
所以我检查了它,并在调试模式下运行它以查看发生了什么。它确实启用了双向绑定,并绑定到视图模型。当UI卸载行时(当它们不再在屏幕上时),会触发propertychanged并将所有内容设置为false。我不知道为什么它会将所有内容都设置为false。您是如何将单选按钮的值绑定到视图模型的,可能有错误。如果您可以编辑您的问题并添加相关代码,以便更快地发现错误,那就太好了。