首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridComboBoxColumn结合

DataGridComboBoxColumn结合
EN

Stack Overflow用户
提问于 2014-04-13 18:25:43
回答 1查看 531关注 0票数 0

我在这里看到过几篇文章,人们对如何绑定到DataGridComboBoxColumn感到困惑,

我有过

代码语言:javascript
复制
<DataGridComboBoxColumn SelectedItemBinding="{Binding Collection}"  DisplayMemberPath="Name" Header="Name" Width="70">

这不管用..。

所以我用

代码语言:javascript
复制
<DataGridComboBoxColumn ItemBinding="{Binding Collection}" DisplayMemberPath="Name"> Header="Name" Width="70">

这同样不起作用,为什么绑定到数据组合与原始组合框不同。

代码语言:javascript
复制
<ComboBox ItemsSource="{Binding Collection}" DisplayMemberPath="Name" HorizontalAlignment="Left">

这是可行的

在DataGrid中绑定到组合框的正确方法是什么?

--编辑--

我可能已经发现了问题,我有一个DataGrid绑定到一个ItemSource,但是,我希望ComboBoxColumn被绑定到一个不同的Itemsource,这可能吗?

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-13 18:26:53

您需要绑定到ItemsSource属性。在EditingElementStyle.中设置它

代码语言:javascript
复制
<DataGridComboBoxColumn>
    <DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding Collection}"/>
            <Setter Property="DisplayMemberPath" Value="Name"/>
        </Style>
    </DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>

如果希望ItemsSource绑定到DataGrid基础源对象之外的集合,也可以这样做。

假设您的集合AnotherCollection驻留在Window/UserControl的ViewModel中,您可以使用RelativeSource标记扩展与其绑定。

此外,还必须将SelectedItemBinding设置为要设置从ComboBox中选择的值的属性,并在ElementStyle of DataGridComboBoxColumn下声明相同的样式。假设属性名称是要绑定到的Name

代码语言:javascript
复制
<DataGridComboBoxColumn SelectedItemBinding="{Binding Name}">
    <DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource"
                    Value="{Binding DataContext.AnotherCollection,
                               RelativeSource={RelativeSource Mode=FindAncestor, 
                                                         AncestorType=Window}}"/>
            <Setter Property="DisplayMemberPath" Value="Name"/>
        </Style>
    </DataGridComboBoxColumn.EditingElementStyle>
    <DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource"
                    Value="{Binding DataContext.AnotherCollection,
                              RelativeSource={RelativeSource Mode=FindAncestor, 
                                                         AncestorType=Window}}"/>
            <Setter Property="DisplayMemberPath" Value="Name"/>
        </Style>
    </DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23046597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档