【发布时间】:2014-11-20 16:23:21
【问题描述】:
我有一个 DependencyProperty X (String) 和 n DependencyProperties Yi (String),它们都是 String 类型,其中 X 是 Yi 对所有 i 的串联。使用 MultiValueConverter 可以轻松实现。
另一方面,如果 x 发生变化,我想将 x 拆分为块并将每个块(通过一些依赖于块数据值的规则集)分配给其对应的 y_i。
为此,我需要知道 ConvertBack 返回的 Object[] 的哪个索引 j 连接到 y_i。
所以我想知道:如何获得对源对象的引用,该对象的属性分配了 ConvertBack 中返回的 Object[] 中的第 j 个值
我的转换方法:
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
StringBuilder b = new StringBuilder();
String cur;
for (Int32 i = 0; i < values.Length; i++)
{
if(String.IsNullOrEmpty(cur = values[i] as String)) continue;
if (b.Length != 0) b.Append(',');
b.Append(cur);
}
return b.ToString();
}
以及对应的ConvertBack
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
Object[] ret = new Object[targetTypes.Length];
// How do I know which Source.Property the element
// ret[i]
// targets
}
【问题讨论】:
-
您对
IValueConverter的唯一其他输入是parameter输入参数,您无法对其进行数据绑定,因此您的选择非常有限。您可能需要重新考虑这种情况...您可以在ItemsControl(您的Y项目)中使用strings 的集合,这些集合呈现为彼此相邻的TextBlocks 以给人留下印象他们都在一个TextBlock中。