我有一个列表(ItemsControl
)的问题。每个问题都有一个组合框,所有组合框都是相同的,想法是实现匹配问题。 我想要的是能够绑定选定的项目和选定的问题,所以我知道哪个组合框被使用。我不知道如何使用组合框做到这一点,因为它不接受可用于其他控件的命令。用组合框绑定两个对象SelectedItem WPF MVVM(ItemsControl)
<ItemsControl ItemsSource="{Binding Path=Question.QuestionResponses}" Grid.Row="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<WebBrowser Margin="0,6,0,6"
Grid.Column="0"
Unloaded="WebBrowserUnload"
util:WebBrowserBehaviors.Body="{Binding QuestionResponse.AnswerText}"></WebBrowser>
<ComboBox Margin="0,6,0,6"
Grid.Column="1"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.Question.MatchesModel.Answers, Mode=OneWay}"
DisplayMemberPath="Answer">
<ComboBox.SelectedItem>
<MultiBinding Converter="{StaticResource MatchConverter}">
<Binding Path="."></Binding>
<Binding Path="."></Binding>
</MultiBinding>
</ComboBox.SelectedItem>
</ComboBox>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
总之,我想传递两个对象到我的模型/ viewModel,所以我可以处理选择。我尝试过使用转换器来构造组合对象,但我不知道如何在使用多重绑定时定义<ComboBox.SelectedItem>
的目标。任何帮助表示赞赏,我在网上找不到任何东西。
编辑我有一个组合框的列表,它可以是2或20个,这取决于列表大小。每个组合框都有相同的项目源。我可以为每个组合框绑定选定的项目,但我无法知道使用哪个文本框来选择项目。我需要知道包含组合框的控件的ID来标识它。我可以得到选定的项目,我可以得到持有组合框的对象,我不能做的是将这两个值传递给我的模型/视图模型,以便我可以用适当的所有者ID绑定选择。组合框或其所有者的内容完全不相关,我只想识别哪个组合框被使用。我意识到我可以通过后面的代码来做到这一点,但我更喜欢mvvm的方式,我可以复制项目源并在其中包含控件,这是很多重复的数据,但可能使保留所选答案更容易。
所以,如果我正确理解你,你有一个答案和问题列表的列表。你在'ItemsControl'中显示答案列表,并希望用户为每个答案选择正确的问题? – grek40
是的,更准确地说,它的问题陈述和用户必须从组合框中选择正确的陈述/答案。问题是我不知道如何使用mvvm将它绑定回来。我可以绑定一个选择,但如果我不知道它属于哪个问题/声明,那对我来说并不好。所以我需要一种方法来传回问题对象来获得它的ID –
也许你正在寻找'' '',但我没有完全明白你的问题。 –