数据网格中的WPF Combobox项目来自数据源

时间:2016-11-10 01:22:44

标签: wpf xaml data-binding binding

这个问题的某种形式似乎在这里被问了大约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}?

0 个答案:

没有答案
相关问题