Silverlight XAML:从关联的EntityCollection绑定到EntityClass中的属性(高级?!)

Silverlight XAML:从关联的EntityCollection绑定到EntityClass中的属性(高级?!),xaml,binding,silverlight-4.0,path,Xaml,Binding,Silverlight 4.0,Path,这个问题与此有关 我有一个像这样的EF模型 使用Silverlight 4,我有一个向用户显示问题的应用程序,通过问题集定义。如果一个问题有多个备选答案,则会呈现一个组合框。如果只给出一个备选方案,则会呈现一个文本框,用户可以在其中放置自由文本 所有用户答案都存储在PersonQA实体中。但问题就在这里:当呈现文本框时,我无法找到正确的路径并绑定到属性“AnswerFreetext”(在PersonQA中)我做错了什么? XAML: XAML有一个ViewModel类作为DataContex

这个问题与此有关

我有一个像这样的EF模型

使用Silverlight 4,我有一个向用户显示问题的应用程序,通过问题集定义。如果一个问题有多个备选答案,则会呈现一个组合框。如果只给出一个备选方案,则会呈现一个文本框,用户可以在其中放置自由文本

所有用户答案都存储在PersonQA实体中。但问题就在这里:当呈现文本框时,我无法找到正确的路径并绑定到属性“AnswerFreetext”(在PersonQA中)我做错了什么?

XAML:


XAML有一个ViewModel类作为DataContext,它公开了问题IEnumerable


t、 我找到了问题的答案。它通过以相反的方式看待问题来解决它。通过反复讨论答案而不是问题,我几乎做到了


此外,我发现通过使用ViewModelProxy类(datacontext proxy),我能够在datatemplate内的相对绑定之外访问AnswerAlternative集合。阅读此处的所有内容:

在“问题:4”RIAmedlemsdatabase.Web.Models.Question(HashCode=6114302)上未找到VS“AnswerAlternativeId”属性的输出窗口中是否看到任何绑定异常。BindingExpression:Path='AnswerAlternativeId'DataItem='Question:4';目标元素是“System.Windows.Controls.ComboBox”(名称=“”);目标属性为“SelectedValuePath”(类型为“System.String”)。。System.Windows.Data错误:BindingExpression路径错误:“在”“PersonQA”“System.ServiceModel.DomainServices.Client.EntityCollection`1[RIAmedlemsdatabase.Web.Models.PersonQA]”BindingExpression:path='PersonQA.AnswerFreetext'上未找到“AnswerFreetext”属性……我已在SelectedValuePath上编辑了path元素。现在,上述例外情况几乎消失了!:)现在的问题是TextBox绑定到一个有问题的集合对象。如何绑定到对象集合中的单个对象属性?值转换器??
        <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>