这个问题的某种形式似乎在这里被问了大约1000次,但是我对XAML绑定一无所知,当我看到答案时,我也可能会阅读希腊文。我只是不了解所有datacontexts,itemssources,bindings,displaymemberpaths等,以及可以分配给它们的值。 Winform绑定似乎相对简单。
我正在开发一个数据库模式以及一些算法来操作数据库。我不是一个GUI开发人员,所以我只想要随意删除骨头功能,这将允许我编辑数据库层次结构中的项目并在其上启动计算。我使用数据库中的EF创建数据模型,然后从EF模型创建数据源。然后我将相应的表拖到WPF窗口上,除了必须将HashSet类型更改为ObservabileCollections外,所有内容都会自动生成,并且看起来效果很好。
但是,表中的一列是一个外键,我选择了一个组合框,希望允许用户从父级的值中设置该值。
这是自动生成的XAML。 Plans表的父表是OptimizationSets,我想在组合框中显示OptimizationSet.Description列,但当然选择OptimizationSetId。
<Window.Resources>
<CollectionViewSource x:Key="userProfileAdvisorsInvestorsPlansViewSource" Source="{Binding Plans, Source={StaticResource userProfileAdvisorsInvestorsViewSource}}"/>
</Windows.Resources>
....
<DataGrid x:Name="dgPlans" AutoGenerateColumns="False" EnableRowVirtualization="True"
ItemsSource="{Binding Source={StaticResource userProfileAdvisorsInvestorsPlansViewSource}}"
RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTemplateColumn x:Name="optimizationSetIdColumn" Header="Optimization Set Id">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox>
<ComboBoxItem Content="{Binding OptimizationSetId}"/>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我知道这已经得到了解答,但答案让我更加困惑。当然,有一种简单的方法可以将组合框显示的项目绑定到父项。
This是我找到的最简单的答案,但为什么是acestortype {x:type window}?