以下代码将显示一种数据形式。在这里,文本框和复选框将显示为它的问题数据类型。如果需要问题是/否答案,将显示复选框,或者需要文本答案,则将显示文本框值。我有至少15个问题如何从“ Button_Click”事件获得此答案。
<ListBox Name="formDetails" ItemsSource="{Binding}" Grid.Row="0">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Name="Text">
<TextBlock Name="Txt_Question"
Text="{Binding Question, Mode=OneWay}"></TextBlock>
<TextBox Name="TxTAnswer"
Text="{Binding Stringval, Mode=TwoWay}"
Visibility="{Binding DataType, Mode=OneWay, Converter={StaticResource TextConverter}}"></TextBox>
<CheckBox Name="BoolVal"
IsChecked="{Binding BoolVal, Mode=TwoWay}"
Visibility="{Binding DataType, Mode=OneWay, Converter={StaticResource YesNoConverter}}"></CheckBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Grid.Row="1" Click="Button_Click" Content="Submit"></Button>
如果您使用完整的MVVM方法,则Command
属性似乎更合适。正如在其他的答案也建议,你可以在命令绑定到您的视图模型的处理程序,在这里我假设ListBox
的ItemsSource
数据驻留,那么剩下的应该是容易的,因为处理程序和数据都在同一个班。
无论如何,鉴于你目前和事件处理的XAML,另一种可能的方式是通过访问ListBox
的ItemsSource
,并将其转换为实际的类型:
private void Button_Click(object sender, RoutedEventArgs e)
{
//assuming that you're using List of Question class model.
var questions = (List<Question>)formDetails.ItemsSource;
//for this purpose ObservableCollection is preferable than List btw
.....
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句