WPF 相对绑定异常

本文关键字:异常 绑定 相对 WPF | 更新日期: 2023-09-27 18:32:26

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

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

当然,组合框不会显示具有值的列表类型中的选择

问题是 - 如何引用视图模型的 ListType 属性从 Grid.Column,其中网格绑定到 DataView MyItems,该 DataView MyItems 没有属性 ListTypes,该属性与 ListTypes 处于同一级别 !!

任何帮助不胜感激

WPF 相对绑定异常

如果我正确理解了这个问题,我希望以下内容有效:

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

Path=ViewModel.MyTypes可能不起作用仅仅是因为您尚未在 ViewModel 属性上实现更改通知。不过,正如我所说 - 你应该能够与Path=DataContext.MyTypes相处得很好.

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