C# 未在XAML绑定上调用ConvertBack

C# 未在XAML绑定上调用ConvertBack,c#,wpf,xaml,binding,converter,C#,Wpf,Xaml,Binding,Converter,我正在使用DataGrid显示一些商店库存信息。每个项目可以属于一种类型的库存 相关实体(“StockEntity”)具有如下属性: “项目ID”、“项目类型”、“杂货店”、“阅读”、“浴室” 此表中的两个示例行是: 27,“杂货店”,“苹果”,空,空,空 127,“读取”,空,“读取灯”,空,空 我无法控制数据库/实体结构 DataGrid列是一个自定义列,其中包含一个文本框。DataGrid绑定到StockEntity对象的ObservableCollection。我想将文本框的值绑定到相关

我正在使用DataGrid显示一些商店库存信息。每个项目可以属于一种类型的库存

相关实体(“StockEntity”)具有如下属性:
“项目ID”、“项目类型”、“杂货店”、“阅读”、“浴室”

此表中的两个示例行是:
27,“杂货店”,“苹果”,空,空,空
127,“读取”,空,“读取灯”,空,空

我无法控制数据库/实体结构

DataGrid列是一个自定义列,其中包含一个文本框。DataGrid绑定到StockEntity对象的ObservableCollection。我想将文本框的值绑定到相关属性。例如,如果'ItemType'='screery',文本框将显示'screery'属性。如果我更改文本框中的值,它应该被写回'screery'属性

以下是我目前掌握的情况:

XAML:

Get/SetStockData()方法只是使用反射来获取/将信息放回正确的属性中。Convert()方法工作正常:文本框显示正确的数据。如果我编辑文本框中的值,它只会恢复为旧值。未调用ConvertBack()

我认为ConvertBack()方法没有被调用是因为绑定路径为“”。”,但我想不出其他解决方法。 我也不知道是否可以用我现有的方式在转换器中“保存”绑定对象。将TextBox的值写回同一实体对象,以保留实体的数据库连接属性,这一点至关重要


非常感谢。

我真正想要的是:

<Binding Path={Binding Path="ItemType"} />
public class WrapperClass{

    public WrapperClass(StockEntity se)
    {
        this._stock = se;
    }

    private StockEntity _stock;
    public stock {
        get { return _stock; }
        set { _stock = value; }
    }

    public string BindingProperty {
        get
        {
            // use reflection to return value
            return StockModel.GetStockData(this._stock);
        }

        set
        {
            // use reflection to set value
            StockModel.SetStockData(ref this._stock);
        }
    }
}
XAML当时只是:

<Binding Path="StockWrapper.BindingProperty" />


您可以正确地假设这是因为您的
绑定的
路径
。为什么不直接绑定到适当的属性?有没有“动态绑定”这样的东西?是否可以使用“ItemType”选择要绑定到的属性?
public class WrapperClass{

    public WrapperClass(StockEntity se)
    {
        this._stock = se;
    }

    private StockEntity _stock;
    public stock {
        get { return _stock; }
        set { _stock = value; }
    }

    public string BindingProperty {
        get
        {
            // use reflection to return value
            return StockModel.GetStockData(this._stock);
        }

        set
        {
            // use reflection to set value
            StockModel.SetStockData(ref this._stock);
        }
    }
}
<Binding Path="StockWrapper.BindingProperty" />