2

给定一个绑定到如下定义的视图模型的用户控件

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; }
}

当然 ComboBox 不显示 ListTypes 的选择,它确实有值

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

任何帮助表示赞赏

4

1 回答 1

1

如果我正确理解了这个问题,我希望以下工作:

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

这可能Path=ViewModel.MyTypes只是因为您没有在ViewModel属性上实现更改通知而无法正常工作。不过,正如我所说,您应该能够与Path=DataContext.MyTypes.

注意:您似乎在问题中都将属性称为属性MyTypes-ListTypes不确定哪个对您的对象模型是正确的。

于 2012-04-29T21:30:35.547 回答