WPF相对绑定异常

时间:2012-04-28 05:56:14

标签: c# .net wpf xaml

给定绑定到viewmodel的usercontrol定义如下

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中具有值

的选择

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

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,我希望以下内容能够发挥作用:

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

Path=ViewModel.MyTypes可能无法正常工作,因为您尚未在ViewModel媒体资源上实施更改通知。正如我所说的那样 - 你应该能够与Path=DataContext.MyTypes相处得很好。

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