0

我有一个 silverlight viewmodel 部分,它看起来像这样:

class ViewModel {
    ObservableCollection<Person> People;
    ObservableCollection<Question> Questions;
    int SelectedQuestionID;
}

class Person {
    int ID;
    string Name;
    int Age;
    string Gender;
    Dictionary<int, Question> Answers;
}

class QandA {
    int ID;
    string QuestionOrAnswerText;
}

我想将“Person”对象的 ObservableCollection 绑定到 DataGrid 并显示一些列。其中三列很简单:姓名、年龄、性别。第四个有点棘手。我希望第四列包含 Person.Answers 属性中的一个问题的“QuestionOrAnswerText”,该属性对应于第四列的列标题中的组合框的选定值,并且当用户更改选定值时更改在上述组合框中。组合框的 selectedvalue 属性将绑定到我的视图模型的 SelectedQuestionID 属性,我希望能够以某种方式绑定到我的 datagrid 列中的该属性以获取我的字典值。

我很难弄清楚在这种情况下要使用什么绑定路径。

这是我的 XAML 在本专栏中的样子:

                <sdk:DataGridTemplateColumn>
                    <sdk:DataGridTemplateColumn.HeaderStyle>
                        <Style TargetType="dataprimitives:DataGridColumnHeader">
                            <Setter Property="ContentTemplate">
                                <Setter.Value>
                                    <DataTemplate>
                                        <ComboBox DataContext="{Binding SelectedDivision}" ItemsSource="{Binding Questions}"
                                                  SelectedValue="{Binding SelectedQuestion, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                                                  SelectedValuePath="ID" DisplayMemberPath="Text"></ComboBox>
                                    </DataTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </sdk:DataGridTemplateColumn.HeaderStyle>
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Answers[{Binding SelectedQuestion, RelativeSource={RelativeSource TemplatedParent}}].Text}"></TextBlock>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>

XAML 编辑器说我在 {Binding Path=Answers[..].Text} 中有一个问题,它期望在“.Text”部分之后有一个额外的右花括号。但是,这会使括号不平衡。

谢谢,马修

4

0 回答 0