给定绑定到定义如下视图模型的用户控件,如下所示

class MyViewModel
{
    public DataView MyView { get; set; }
    public DataView MyTypes { get; set; }
}


XAML大致标记如下

<Grid>
    <dxg:GridControl AutoPopulateColumns="True" Name="gridControl1" ItemsSource="{ Binding MyView}">
        <dxg:GridControl.Columns>
            <dxg:GridColumn FieldName="col1">
                <dxg:GridColumn.EditTemplate>
                    <ControlTemplate>
                        <dxe:ComboBoxEdit Name="cmbTypes"
                       ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
                            Path=ViewModel.MyTypes}"/>
                    </ControlTemplate>
                </dxg:GridColumn.EditTemplate>
            </dxg:GridColumn>
            <dxg:GridColumn FieldName="col2"/>
            <dxg:GridColumn FieldName="col3" Width="75"/>
        </dxg:GridControl.Columns>
        <dxg:GridControl.View>
            <dxg:TableView Name="tableView1" AutoWidth="True" ShowTotalSummary="True" />
        </dxg:GridControl.View>
    </dxg:GridControl>
</Grid>


绑定如下

internal MyViewModel ViewModel
{
    get { return (MyViewModel)DataContext; }
    set { DataContext = value; }
}


当然,组合框不会显示具有值的ListTypes中的选择

问题是-如何引用ViewModel的ListTypes属性
从Grid绑定到的Grid.Column到不具有属性ListTypes的DataView MyItems,该属性与ListTypes处于同一级别!

任何帮助表示赞赏

最佳答案

如果我已经正确理解了这个问题,那么我希望以下工作可以解决:

{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
                        Path=DataContext.MyTypes}


可能是Path=ViewModel.MyTypes不能正常工作,仅仅是因为您尚未在ViewModel属性上实现更改通知。就像我说的那样-您应该能够与Path=DataContext.MyTypes相处得很好。

注意:您似乎在问题中同时将属性称为MyTypesListTypes-不确定哪种对象模型正确。

07-24 12:35