在初始化时对于不在VisualFree中的元素的WPF UserControl的分离绑定问题

时间:2015-07-10 11:58:59

标签: c# wpf xaml mvvm

我最近遇到了WPF的问题。不在VisualTree中的属性无法获取datacontext来处理绑定。我举了一个例子。

<Path>
  <Path.Data>
     <CombinedGeometry>
       <CombinedGeometry.Geometry1>
         <RectangleGeometry.Transform>
           <ScaleTransform ScaleY="{Binding WhatScale, Converter={StaticResource DoSomethingAwesome}, FallbackValue=1, TargetNullValue=1}"/>
         </RectangleGeometry.Transform>
       </CombinedGeometry.Geometry1>
       ...
     </CombinedGeometry>
  </Path.Data>
</Path>

我通过添加一个虚拟引用对象并将其添加为绑定源

来解决这个问题
<FrameworkElement x:Name="DummyElement"/>
...
ScaleY="{Binding DataContext.WhatScale, Converter="{StaticResource DoSomethingAwesome}", Source="{x:Reference DummyElement}}"

但是:我仍然会收到这些烦人的信息控制台消息

BindingExpression cannot retrieve value from null data item. 
This could happen when binding is detached or when binding to a 
Nullable type that has no value. BindingExpression:Path=DataContext.WhatScale

UserControl是从ItemsControl呈现的,我相信的问题是DataContext在初始化时是空的,并且在设置之后直接使代码仍然有效。但是,我真的不喜欢我得到的“信息”,我想了解会发生什么以及如何避免它。

谢谢!

0 个答案:

没有答案