给定绑定到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处于同一级别!!!
感谢任何帮助
答案 0 :(得分:1)
如果我正确理解了这个问题,我希望以下内容能够发挥作用:
{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
Path=DataContext.MyTypes}
Path=ViewModel.MyTypes
可能无法正常工作,因为您尚未在ViewModel
媒体资源上实施更改通知。正如我所说的那样 - 你应该能够与Path=DataContext.MyTypes
相处得很好。
注意:您似乎在问题中将该属性称为MyTypes
和ListTypes
- 不确定哪个对象模型正确。