2011-12-18 56 views
1

我有一个WPF应用程序的问题。不知何故,似乎我的WPF控件中的两个(多个)绑定没有立即应用。当我用Snoop查看视觉树时,绑定突然被应用,并且一切正常。WPF绑定以某种方式被延迟(错误)

这是什么原因?

的XAML代码是在这里:

<Grid Grid.Column="1" Margin="5"> 
    <m:Map ZoomLevel="12" Center="{Binding MapCenter, Mode=TwoWay}"> 
     <m:Map.CredentialsProvider> 
      <m:ApplicationIdCredentialsProvider ApplicationId="???"/> 
     </m:Map.CredentialsProvider> 

     <m:Pushpin Location="{Binding Station.Location, Mode=TwoWay, Converter={StaticResource debugConverter}}" /> 
    </m:Map> 
    <Button Command="{Binding CenterOnAddressCommand, PresentationTraceSources.TraceLevel=High, Converter={StaticResource debugConverter}}" 
     Content="Adresse zentrieren" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,20" /> 
</Grid> 

Map.Center财产的作品和其他两个绑定(在图钉和Button)的结合不。地图控件来自Bing地图WPF控件。

编辑: 经过一番深入调查我试图消除绑定到Map.Center属性,然后一切正常(当然除了集中于某一位置的地图)。怎么会这样?

在此先感谢!

+0

转换器甚至不被调用? – Paparazzi 2011-12-18 17:03:40

+0

准确地说,当我在Snoop中查看绑定时,他们会被调用,但不会在此之前调用:(。 – chrischu 2011-12-18 17:40:38

+0

不是我知道如何处理此信息,但是如果给它一个错误的绑定名称,PresentationTraceSources会给您一个错误? – Paparazzi 2011-12-18 19:42:35

回答

2

两个小技巧:

  1. 尝试正在增加在输出窗口中显示的WPF消息的详细程度。您可以通过Tools > Options > Debugging > Output Window > WPF Trace Settings并将Data Binding更改为All之类的方法来实现此目的。

  2. UpdateSourceTrigger属性添加到失败的绑定 - 可能是绑定没有被告知要更新。也许Snoop触发应用程序范围的绑定更新。

我希望能帮助您找到问题的原因。

+0

1.没有绑定错误(因为直到我在snoop中选择元素时,绑定才被“应用”(至少这是我认为发生的事情) 。 2.添加UpdatSourceTrigger没有帮助:(。 我试着删除绑定到Map.Center属性,然后一切正常(除了在地图上居中定位)。怎么会这样? – chrischu 2011-12-22 13:27:15

+0

详细的绑定输出是否为您提供了任何信息(不一定是错误),表明某些内容正在与您遇到的绑定一起工作?尝试比较具有“Map.Center”属性绑定时的输出,以及何时不这样做。你可能会看到一些有用的区别。 – 2011-12-22 14:27:05

0

那么m:Map控件呢?它是否在初始化时尊重这些值?即如果你给财产的固定价值是工作。

尝试Reflector验证Map控件的代码。

+0

是的,它确实遵守固定值。 – chrischu 2011-12-29 09:05:55