1

我又带着另一个恼人的问题回来了。问题出在 .net 4.0 框架中,TargetProperty 类型转换似乎有一些问题,这在 msdn 论坛中也有报道。我已经提出了我在这里使用的代码。有人可以建议我一个解决方案吗?

谈到这个问题的 MSDN 链接粘贴在下面: http ://social.msdn.microsoft.com/Forums/en/wpf/thread/931d7bff-90b6-4a70-bb0b-3a097e1301a1

var targetHelper = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));
            targetProperty = targetHelper.TargetProperty 作为 DependencyProperty;
            返回提供值内部();

私有对象 ProvideValueInternal() { 对象值 = 空; 如果(目标属性!= null) { IFontManager fontManager = DisplayResourceManager.Instance.FontManager; 值 = fontManager.GetFont(Key); }

if (Converter != null) { value = Converter.Convert(value, targetProperty.PropertyType, null, CultureInfo.CurrentCulture); } return value; }
4

1 回答 1

1

我不知道人们是否选择不回答这个问题,认为这很愚蠢,或者因为他们不知道问题的答案。但无论如何,我会给出我发现的解决方案。在 .net 4.0 中,targetHelper.TargetProperty 不会返回正确的预期类型,而是我会从目标对象中找到它,如下所示

        if (targetHelper != null)
        {
            if (targetHelper.TargetObject is Setter)
            {
                targetProperty = (targetHelper.TargetObject as Setter).Property;
            }
        }
        if (targetProperty == null)
        {
            targetProperty = targetHelper.TargetProperty as DependencyProperty;
        }
于 2011-03-16T08:32:14.763 回答