Połączenie aplikacji WPF z aplikacją WinForms

0

Witam,
Napotkałam na pewien problem podczas przenoszenia jednego z projektów wykonanego w WPFie do projektu WinForms.
Znalazłam na internecie fajny artykuł na temat łączenia tych dwóch technologii.
Stworzyłam w projekcie moją kontrolkę user control, która zawierała ChartPlotter z biblioteki DynamicDataDisplay.

  <d3:ChartPlotter Height="200"  Width="500" Name="plotter" /> 

W bibliotece tej zadeklarowana jest metoda AddLineGraph, którą w WPFie można było bez problemu wywołać.
Niestety po stworzeniu w projekcie WinForm-sowym nie mogę się odwołać bezpośrednio- tak jak robiłam w WPFie :

 graf = plotter.AddLineGraph(ds0, Colors.Blue, 2, "rec");

Wyskakuje mi informacja, mój element host (czyli user control) nie zawiera definicji metod 'Microsoft.Research.DynamicDataDisplay.Plotter2DExtensions.AddLineGraph(Microsoft.Research.DynamicDataDisplay.Plotter2D, Microsoft.Research.DynamicDataDisplay.DataSources.IPointDataSource, System.Windows.Media.Pen, Microsoft.Research.DynamicDataDisplay.PointMarkers.ElementPointMarker, Microsoft.Research.DynamicDataDisplay.Description)'

Wiem, że powinny być zadeklarowane właściwości, metody dla stworzonej kontrolki, jednakże nie wiem jak "wyciągnąć" choćby z biblioteki taką metodę? Jest wgl taka możliwość aby wykorzystać ChartPlotter, który jest wrzucony do user control?
jest w stanie ktoś pomóc? Podać jakąś wskazówkę? Byłabym wdzięczna.

Pozdrawiam serdecznie :)

0

Zeby wyciagnac z biblioteki definicje jakiejs metody mozesz uzyc np dotPeeka (lub czegos podobnego)

0

Właściwie to nie powinno się tego robić. Cały kod specyficzny dla WPF powinien się zawierać w klasie user control, a komunikacja z resztą kodu powinna być przez metody i eventy.

plotter jest polem klasy "user control" (domyślnie UserControl1) i w tej klasie powinno się go tylko używać.

Ale jak już musisz, to najprościej wyciągnąć za pomocą metody albo właściwości:

    public partial class UserControl1 : UserControl
    {
        public ChartPlotter Plotter
        {
            get
            {
                return plotter;
            }
        }

Z kodu WinFormsowego dostaniesz się do obiektu UserControl1 w ten sposób:

ChartPlotter cp = (elementHost1.Child as UserControl1).Plotter;

1 użytkowników online, w tym zalogowanych: 0, gości: 1