此问题与此question有关。
我有一个像this这样的EF模型。
使用Silverlight 4我有一个应用程序向用户显示问题,通过QuestionSet定义。如果问题有多个答案替代,则会渲染一个ComboBox。如果只给出一个替代,则渲染TextBox,用户可以在其中放置freetext。
所有用户答案都存储在PersonQA实体中。但这里有一个问题:当呈现TextBox时,我无法找到正确的路径并绑定到属性“AnswerFreetext”(在PersonQA中)。 我做错了什么?
XAML:
<ListBox x:Name="QAListBox" ScrollViewer.VerticalScrollBarVisibility="Auto" SelectedIndex="-1" ItemsSource="{Binding Questions}" IsTabStop="True" TabIndex="5" ScrollViewer.HorizontalScrollBarVisibility="Auto" Margin="10" BorderThickness="0"> <ListBox.Resources> <fx:EqualityToVisibilityConverter x:Key="converter" TrueValue="Visible" FalseValue="Collapsed" /> <fx:CollectionToFirstElementConverter x:Key="collectiontoitem" /> </ListBox.Resources> <ListBox.ItemTemplate> <DataTemplate> <Grid d:DesignWidth="931" d:DesignHeight="61" d:IsLocked="True" Margin="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width=".80*" MinWidth="800"/> <ColumnDefinition Width=".20*" MinWidth="200"/> </Grid.ColumnDefinitions> <TextBlock Text="{Binding Path=QuestionText}" Padding="10" FontSize="21.333" FontWeight="Bold" Margin="0" Grid.Column="0" d:IsLocked="True" /> <ComboBox ItemsSource="{Binding AnswerAlternative, Mode=OneWay}" SelectedValuePath="AnswerAlternativeId" DisplayMemberPath="AnswerText" FontSize="21.333" FontWeight="Bold" Grid.Column="1" Margin="60,0,0,0" d:IsLocked="True" SelectionChanged="ComboBox_SelectionChanged" Visibility="{Binding Path=AnswerAlternative.Count, Converter={StaticResource converter}, ConverterParameter=2}"> </ComboBox> <TextBox Grid.Column="1" Margin="60,0,0,0" Text="{Binding Path=PersonQA.AnswerFreetext, Mode=TwoWay}" Visibility="{Binding AnswerAlternative.Count, Converter={StaticResource converter}, ConverterParameter=1}" /> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
XAML有一个ViewModel类作为DataContext,它暴露了问题 IEnumerable。
吨。
答案 0 :(得分:0)
我找到了问题的答案。它通过以相反的方式查看问题来解决它。通过迭代答案而不是问题,我几乎就在那里。
此外,我发现通过使用ViewModelProxy-class(datacontext代理),我能够在datatemplate内部的相对绑定之外访问AnswerAlternative集合。在此处阅读所有相关内容:http://weblogs.asp.net/dwahlin/archive/2009/08/20/creating-a-silverlight-datacontext-proxy-to-simplify-data-binding-in-nested-controls.aspx