我有这种关系:
产品o --- o <产品类别> o --- o类别
要显示给用户的类别信息:名称
此信息已从数据库正确加载到模型(EF Core 2)。我无法解决的问题是使用LookUpEdit为产品选择不同的类别,并在文本控件中显示此选择。当然,我需要先向用户显示所有类别,但是当选择产品时,我也需要加载以前保存的数据库的产品类别。
那么本质的问题是我尝试使用一个条件(product.ProductCategory.Category),但是LookUpEdit在一开始就绑定了所有类别:
LOOKUPEDIT XAML代码:
id: nfs-server
kind: Service
apiVersion: v1beta1
port: 2049
protocol: tcp
selector:
name: nfs-server
和类别转换器代码:
公共类CategorYConverter:MarkupExtension,IValueConverter { 公共CategorYConverter(){}
<dxg:LookUpEdit ItemsSource="{Binding Categories}" IsTextEditable="False" EditValue="{Binding Product.ProductCategories, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource CategoryConverter}}">
我可以加载产品选择的类别,但是当用户从lookupedit中选择一个类别时,我无法解析。它没有正确绑定到lookupedit。所以我不能同时使用这两种解决方案。
答案 0 :(得分:0)
最后我发现了问题:当用户从lookupedit类别控件中选择类别时,将调用ConvertBack函数。因此,我只需要将收到的数据“转换”为需要EditValue绑定的数据:Product.ProductCategories。完全相同的格式,在我的情况下是ObservableHashSet
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
IList<object> map = value as IList<object>;
ObservableHashSet<ProductCategory> pc = new ObservableHashSet<ProductCategory>();
foreach (var m in map)
{
pc.Add(new ProductCategory() { Category = m as Category });
}
return pc;
}
希望这对某人有帮助