2013-04-30 1 views
1

Я пытаюсь воссоздать пример под названием «Line Graph легенда» под Miscellanous в следующей ссылке, http://research.microsoft.com/en-us/um/cambridge/projects/ddd/d3isdk/динамических данных с легендой флажком (WPF)

Я использую WPF не silverligth, и возникли проблемы с получением ссылки для следующей части XAML.

<d3:Chart.LegendContent> 
    <d3:LegendItemsPanel> 
     <d3:LegendItemsPanel.Resources> 
      <DataTemplate x:Key="Microsoft.Research.DynamicDataDisplay.LineGraph"> 
       <StackPanel Orientation="Horizontal"> 
        <CheckBox IsChecked="{Binding Path=Visibility, Converter={StaticResource VisibilityToCheckedConverter}, Mode=TwoWay}"/> 
        <Line Width="15" Height="15" X1="0" Y1="0" X2="15" Y2="15" Stroke="{Binding Path=Stroke}" StrokeThickness="2"/> 
        <TextBlock Margin="5,0,0,0" Text="{Binding Path=Description}"/> 
       </StackPanel> 
      </DataTemplate> 
     </d3:LegendItemsPanel.Resources> 
    </d3:LegendItemsPanel> 
</d3:Chart.LegendContent> 

Благодаря

+0

Можно ли использовать SilverLight управления в WPF настольных приложений? – guilhermecgs

ответ

2

я постигла та же путаница при запуске с D3. Насколько я понимаю, он был впервые разработан для WPF, а затем использовался как плацдарм для создания такой же функциональности в Silverlight. Таким образом, примеры, которые вы видите в Интернете, имеют некоторые отличия и некоторые дополнительные возможности, которые вы не увидите в версии WPF.

Во-первых, класс «Диаграмма» не существует в версии WPF. Скорее всего, вы будете использовать «ChartPlotter» для своих графиков. То же самое с «Legend» и «LineLegendItem» вместо «LegendContent» и «LegendItemsPanel». Это может быть там, где вы пытаетесь идти:

<d3:ChartPlotter> 
    <d3:Legend> 
     <d3:LineLegendItem> 
      <d3:LineLegendItem.Resources> 
       <DataTemplate StackPanel with checkbox> 
      </d3:LineLegendItem.Resources> 
     </d3:LineLegendItem> 
    </d3:Legend> 
</d3:ChartPlotter> 

Я не использовал эти классы лично, поэтому у меня нет знания из первых рук, что это соответствует Silverlight пример, но я надеюсь, что это достаточно, чтобы вы от земли и экспериментов.

Я настоятельно рекомендую посмотреть примеры из загрузки on the official D3 page. Недавно я узнал, что вы можете просмотреть код позади своих образцов, который досадно не включен в загрузку, online here. (Стабильный> v0.3.1> src> Образцы, найдите образец, который вы хотите изучить).

Я не вижу там тех, у кого есть ваш пример использования флажка в легенде, но ваш метод кажется, что он должен работать, как только вы начнете обращаться к правильным классам.

Кроме того, я полагаю, вы используете следующую строку, а не Silverlight один, чтобы ссылаться на библиотеку:

xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0" 
+2

Спасибо, @Ross. Я нашел решение здесь: http://social.msdn.microsoft.com/Forums/en-US/wpfzhchs/thread/8b8dbcd5-e1f9-450e-b146-87d7acbee72b Это на китайском, но вы можете перевести его с помощью Google , Работает отлично! – guilhermecgs