Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF Radiobutton在数据网格中滚动后失去状态_C#_Wpf_Datagrid_Scroll_Virtualization - Fatal编程技术网

C# WPF Radiobutton在数据网格中滚动后失去状态

C# WPF Radiobutton在数据网格中滚动后失去状态,c#,wpf,datagrid,scroll,virtualization,C#,Wpf,Datagrid,Scroll,Virtualization,我有一个wpf应用程序,它有一个充满问题的datagrid。每个问题有两组单选按钮(好的、更好的、最好的;不重要的、重要的、最重要的)。大约有200个问题填充到网格中,大约15-20个问题显示出来,而不需要滚动。我已经把逻辑降低到允许选择单选按钮的程度,但是当我滚动时,对象失去了焦点,没有保留答案 基本上,我可以回答前20个问题,但当我向下滚动时,由于datagrid的虚拟化,我会丢失答案。我试着把它关掉,但是应用程序需要很长时间才能加载,排序也就不见了。我必须把它打开。有人知道如何在滚动后保持

我有一个wpf应用程序,它有一个充满问题的datagrid。每个问题有两组单选按钮(好的、更好的、最好的;不重要的、重要的、最重要的)。大约有200个问题填充到网格中,大约15-20个问题显示出来,而不需要滚动。我已经把逻辑降低到允许选择单选按钮的程度,但是当我滚动时,对象失去了焦点,没有保留答案


基本上,我可以回答前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。您是如何将单选按钮的值绑定到视图模型的,可能有错误。如果您可以编辑您的问题并添加相关代码,以便更快地发现错误,那就太好了。