Словарь статических ресурсов для привязки данных к древовидной карте из набора инструментов wpf - PullRequest
1 голос
/ 12 апреля 2010

Я пытаюсь привязать некоторые диаграммы к словарю строки, int, и я использую шаблон view-viewmodel.

Я уже связал словарь с гистограммой, но теперь я хотел бы привязать его к элементу управления treemap из WPF Toolkit. Он не документирован нигде в интернете, кроме 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>

1 Ответ

0 голосов
/ 27 декабря 2011

Проблема в том, что вы продолжаете вызывать «Binding Source = {StaticResource ShellVM}» для каждого элемента, который может вызвать (зависит от вашей реализации). Во всяком случае, это не совсем правильный способ использовать его при реализации MVVM. Правильный способ сделать это - установить контейнер отца (даже полного представления, если вы реализуете MVVM) DataContext, который приводит его лист к инерции виртуальной машины:

DataContext={Binding Source={StaticResource ShellVM}

, а затем, например:

Text = {Binding CustodianEmailCount.Key}
...