2010-04-12 95 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}