2013-03-27 32 views
5

Tôi đang tìm kiếm điều khiển biểu đồ tốt và tìm thấy "Modern UI (Metro) Charts for Windows 8, WPF, Silverlight" Điều khiển này trông thực sự tốt nhưng tôi cần điều này cho Visual Studio 2010 và 4.0. Nguồn gốc được viết trong Visual Studio 2012 und 4.5 vì vậy tôi đã cố tạo một dự án mới với các tệp lớp. Mọi thứ đều hoạt động tốt. Tôi có thể biên dịch các lớp và gỡ lỗi thông qua. Nhưng kết quả là một cửa sổ trống. Tôi không biết sai lầm ở đâu. Các tập tin là thats không thay đổi do tại sao tôi đăng một số hình ảnh:"Giao diện người dùng hiện đại (Metro) cho Windows 8, WPF, Silverlight" cho .net 4.0

mẫu làm việc the working sample

sao chép 4,0 mẫu copied 4.0 sample

mẫu làm việc Snoop the working sample Snoop

đã sao chép 4. 0 mẫu Snoop copied 4.0 sample Snoop

Trả lời

0

Tôi phải làm hai việc để làm việc với VS2010. Đầu tiên là databinding không được mang theo khi thiết lập DataContext cho ChartBase. Điều đó dẫn đến không có dữ liệu để vẽ. Để khắc phục điều đó tôi đã thay đổi ChartBase.OnSeriesSourceChanged sử dụng LoadDataTemplate đó tải các nội dung sau đó vòng qua và đặt tất cả các databindings:

private void OnSeriesSourceChanged(IEnumerable oldValue, IEnumerable newValue) 
{ 
    this.Series.Clear(); 
    if (newValue != null) 
    { 
     foreach (object item in newValue) 
     { 
      if (SeriesTemplate != null) 
      { 
       ChartSeries series = LoadDataTemplate<ChartSeries>(SeriesTemplate, item); 
       if (series != null) 
       { 
        // set data context 
        series.DataContext = item; 
        this.Series.Add(series); 
       } 
      } 
     } 
    } 
    UpdateGroupedSeries(); 
} 

private static T LoadDataTemplate<T>(DataTemplate template, object dataContext) 
    where T : FrameworkElement 
{ 
    DependencyObject element = template.LoadContent(); 
    T view = element as T; 
    view.DataContext = dataContext; 

    var enumerator = element.GetLocalValueEnumerator(); 
    while (enumerator.MoveNext()) 
    { 
     var bind = enumerator.Current; 

     if (bind.Value is BindingExpression) 
     { 
      view.SetBinding(bind.Property, ((BindingExpression)bind.Value).ParentBinding); 
     } 
    } 

    return view; 
} 

Thứ hai tôi đã phải thay đổi dự án để bao gồm các tập tin Generic.xaml đúng. Hãy chắc chắn sử dụng một trong De.TorstenMandelkow.MetroChart.WPF/Chủ đề. Nó cần phải bao gồm BaseChartStyle.

HTH

Các vấn đề liên quan