Как проверить, какая кнопка radiobuttton в listview нажата для каждого узла из XML-файла

#c# #xml #xaml

#c# #xml #xaml

Вопрос:

C#:

 XDocument xdoc = XDocument.Load("http://quizgyan.site40.net/Questions3.xml");
var data = from query in xdoc.Descendants("question")
           select new pq3(
               (string)query.Element("qno"), 
               (string)query.Element("que"), 
               (string)query.Element("optiona"), 
               (string)query.Element("optionb"), 
               (string)query.Element("optionc"), 
               (string)query.Element("optiond"), 
               (string)query.Element("correct"));
listView.ItemsSource = data;
  

XAML:

 <ListView x:Name="listView" ItemsSource="{Binding}" Margin="46,0,44,95" Background="{x:Null}" Foreground="#FFF9F6F6">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Margin="10" >
                <StackPanel Orientation="Horizontal">
                    <TextBlock HorizontalAlignment="Left" Margin="46,36,0,0" TextWrapping="Wrap" Text="{Binding qNO}" VerticalAlignment="Top"/>
                    <TextBlock HorizontalAlignment="Left" Margin="46,36,0,0" TextWrapping="Wrap" Text="{Binding Que}" VerticalAlignment="Top"/>
                </StackPanel>
                <StackPanel x:Name="SP1" Orientation="Horizontal">
                    <RadioButton x:Name="RadioButton1" Content="{Binding opA}" Margin="46, 40,0, 0"/>
                    <RadioButton x:Name="RadioButton2" Content="{Binding opB}" Margin="46, 40,0, 0"/>
                    <RadioButton x:Name="RadioButton3" Content="{Binding opC}" Margin="46, 40,0, 0"/>
                    <RadioButton x:Name="RadioButton4" Content="{Binding opD}" Margin="46, 40,0, 0"/>
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
  

Комментарии:

1. Вы хотите увидеть эту информацию, как только они ее нажмут? Или когда пользователь закончил, и они сохраняют их все вместе?

2. это после сохранения их всех вместе. По сути, я создаю приложение для викторины, и вопросы хранятся в XML-файле, а содержимое переключателей также извлекается из XML-файла. Поэтому, как только пользователь отметит все ответы, мне нужно проверить, какие из них правильные.

Ответ №1:

Вы можете добавить свойство в свой класс pq3:

 public bool IsChecked { get; set; }
  

Затем привяжитесь к этому свойству в пользовательском интерфейсе…

 <RadioButton x:Name="RadioButton1" IsChecked="{Binding IsChecked}" Content="{Binding opA}" Margin="46, 40,0, 0"/>
  

И как только они отправят форму (при условии, что у вас настроено событие нажатия кнопки), все, что вам нужно сделать, это взглянуть на ItemSource, и все готово:

 foreach(var item in (IEnumerable<pq3>)listView.ItemsSource)
{
    var isThisOneChecked = item.IsChecked;
}