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 处于同一级别 !!
任何帮助不胜感激
如果我正确理解了这个问题,我希望以下内容有效:
{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
Path=DataContext.MyTypes}
Path=ViewModel.MyTypes
可能不起作用仅仅是因为您尚未在 ViewModel
属性上实现更改通知。不过,正如我所说 - 你应该能够与Path=DataContext.MyTypes
相处得很好.
注意:您似乎在问题中将该属性称为MyTypes
和ListTypes
- 不确定哪个对象模型是正确的。