2010-04-12 99 views
1

我想将一些图绑定到字符串int的字典,并且我使用了view-viewmodel模式。从wpf工具箱将静态资源字典数据绑定到树图

我已将字典绑定到条形图,但现在我想将其绑定到WPF工具包的树形图控件。它没有真正记录在任何地方在线,除了这里为silverlight:http://blogs.msdn.com/marlat/archive/2009/07/10/treemap-control-comes-to-silverlight-toolkit.aspx

任何人都可以帮助我解决正确的绑定到我的控制?

<DataVisualization:TreeMap x:Name="treeMapControl"> 

          <DataVisualization:TreeMap.Interpolators> 

           <DataVisualization:SolidColorBrushInterpolator TargetName="itemBorder" TargetProperty="Background" 

             DataRangeBinding="{Binding Source={StaticResource ShellVM},Path=CustodianEmailCount.Value}" From="Blue" To="Magenta" /> 

           <DataVisualization:DoubleInterpolator TargetName="textBlk" TargetProperty="FontSize" 

             DataRangeBinding="{Binding Source={StaticResource ShellVM},Path=CustodianEmailCount.Value}" From="8" To="15" /> 

          </DataVisualization:TreeMap.Interpolators> 



          <DataVisualization:TreeMap.ItemDefinition> 

           <DataVisualization:TreeMapItemDefinition ItemsSource="{Binding Source={StaticResource ShellVM},Path=CustodianEmailCount.Key}" ValueBinding="{Binding Source={StaticResource ShellVM},Path=CustodianEmailCount.Value}" ChildItemPadding="1"> 

            <DataTemplate> 

             <Border x:Name="itemBorder" BorderBrush="Black" BorderThickness="1" ToolTipService.ToolTip="{Binding ToolTip}"> 

              <TextBlock x:Name="textBlk" Foreground="White" Text="{Binding Source={StaticResource ShellVM},Path=CustodianEmailCount.Key}" VerticalAlignment="Center" Margin="2,2,0,0" 

            TextWrapping="Wrap" TextAlignment="Center"/> 

             </Border> 

            </DataTemplate> 

           </DataVisualization:TreeMapItemDefinition> 

          </DataVisualization:TreeMap.ItemDefinition> 

         </DataVisualization:TreeMap> 

回答

0

问题在于,在每个可能导致(取决于您的实现)的项目上,您总是调用“Binding Source = {StaticResource ShellVM}”。无论如何,这不是在实现MVVM时使用它的正确方法。 正确的方式做到这一点是设置了父亲的容器(甚至是完整视图,如果要实现MVVM)的DataContext这会导致其叶子inherates的VM:

DataContext={Binding Source={StaticResource ShellVM} 

再比如:

Text = {Binding CustodianEmailCount.Key}