给定绑定到定义如下视图模型的用户控件,如下所示
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
相处得很好。注意:您似乎在问题中同时将属性称为
MyTypes
和ListTypes
-不确定哪种对象模型正确。