我是WPF的新手,这个绑定错误让我发疯。 我有一个具有组合框的datatemplate。该datatemplate由gridview列使用。我试图将组合框绑定到csla对象,但它让我失误:
System.Windows.Data错误:40:BindingExpression路径错误:
' oChargeCodesValidvalues'在' object'上找不到的属性 '' EditGridCellData' (的HashCode = 59067897)&#39 ;. BindingExpression:路径= DataContext.oChargeCodesValidvalues; 的DataItem ='组合框' (名称='&#39);目标元素是' ComboBox' (名称='&#39); 目标属性是' ItemsSource' (键入' IEnumerable')
这是我的xaml的片段:
<DataTemplate x:Key="combodescriptionTemplate">
<ComboBox Name="cboCodeValidValues" ItemsSource="{Binding DataContext.oChargeCodesValidvalues, RelativeSource={RelativeSource Mode=Self}}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
<local:TotalCellTemplateSelector x:Key="totalcellTemplateSelector"
combodescriptionTemplate="{StaticResource combodescriptionTemplate}"/>
基于评论的更多信息: 我在wcf中使用devexpress gridview。有两列都是有界的。首先是组合框,第二个是默认的文本框和基于第一列的值的组合.gridview数据源是代码csla对象。 ChargeCodeValidValues是cslaobjcet。我用datatemplate来改变第二栏的编辑。
以下是我的ChargeCodeValidValues对象的代码片段:
public class ChargeCodeValidValues
{
public DataTable ChargeCodesValidValuesTable { get; set; }
public ChargeCodeValidValues()
{
LoadChargeCodesValidValues();
}
public void LoadChargeCodesValidValues()
{
//get data from db
}
调用代码:
private ChargeCodeValidValues oChargeCodesValidvalues;
oChargeCodesValidvalues = new ChargeCodeValidValues();
我试图将combox绑定到oChargeCodesValidvalues并超出错误。
以下是我的TotalCellTemplateSelector的片段:
public DataTemplate combodescriptionTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
GridCellData cellData = item as GridCellData;
if (cellData != null)
{
RowData rowdata = cellData.RowData;
DataRowView rowview = rowdata.Row as DataRowView;
if (rowview != null)
{
DataRow drCC = rowview.Row;
//if(drCC.Field<int>("FieldName") != DBNull.Value)
//{
int Code = drCC.Field<int>("FieldName", 0);
if (Code == Value)
return combodescriptionTemplate;
else
return null;
// }
}
答案 0 :(得分:1)
如果我没弄错,你使用DevExpress WPF控制套件中的GridControl
(或TreeListControl
)并试图模拟一个单元格。
对于每个单元格,应该呈现的数据包装在EditGridCellData
对象中,并且应用该对象的数据模板(因此默认情况下为DataContext
属性的值为模板内的控件)。如果列处于绑定模式(即Binding
或FieldName
已设置),则绑定为当前行生成的值由EditGridCellData.Value
属性公开。您还可以通过EditGridCellData.RowData.Row
路径访问与当前行关联的对象。
说完并假设oChargeCodesValidvalues
是与当前行关联的对象(item)的属性,您应该将绑定更改为:
{Binding DataContext.RowData.Row.oChargeCodesValidvalues, RelativeSource={RelativeSource Mode=Self}}
作为旁注,如果您没有明确指定绑定的源,则目标对象的DataContext
将自动用作源,因此您可以将语法缩短为:
{Binding RowData.Row.oChargeCodesValidvalues}
*如果目标对象是 FrameworkElement
或 FrameworkContentElement