Używał ktoś Prism-a do modułów?

Używał ktoś Prism-a do modułów?
JA
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad rok
0

Cześć
mam taką jedną małą rzecz do zrobienia

  • WPF, MVVM, PRISM, MODUŁY

o ile dość łatwo dowiedzieć się jak się ładuje moduły i to jest proste
to mam pytanie
jak w PRISM zrobić MENU, tak żeby każdy załadowany moduł miał swój ITEM

mr-owl
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad rok
  • Postów:206
1

Witam,

Użyj RegionAdapter-a.

Pozdrawiam,
mr-owl

JA
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad rok
0
mr-owl napisał(a):

Witam,

Użyj RegionAdapter-a.

Pozdrawiam,
mr-owl

Bardzo dziękuję za poradę
teraz poziom trudności wzrasta

Prism, devexpress, WPF, Ribbon

O ile już ogarnalem jak to wszystko połaczyć - to z ribbonem nie działa

Main Window

Kopiuj

            <dxr:RibbonControl Name="shellRibbonControl" DockPanel.Dock="Top" prism:RegionManager.RegionName="{x:Static core:RegionNames.RibbonPageRegion}">
                <dxr:RibbonDefaultPageCategory />
            </dxr:RibbonControl>

Moduł

Kopiuj
regionManager.RegisterViewWithRegion(RegionNames.RibbonPageRegion, typeof(ModuleARibbonPage));

Adapter

Kopiuj
public class RibbonControlRegionAdapter: RegionAdapterBase<RibbonControl>
    {
public RibbonControlRegionAdapter(RegionBehaviorFactory regionBehaviorFactory)
            : base(regionBehaviorFactory)       {        }

        protected override void Adapt(IRegion region, RibbonControl regionTarget)
        {
            region.Views.CollectionChanged += (s, e) =>
            {
                if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
                {
                   
                }
                else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
                {

                }
            };
        }

        protected override IRegion CreateRegion()
        {
            return new AllActiveRegion();
        }
    }
}

App.xaml.cs

Kopiuj
 protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings)
        {
            base.ConfigureRegionAdapterMappings(regionAdapterMappings);
            regionAdapterMappings.RegisterMapping(typeof(RibbonControl), Container.Resolve<RibbonControlRegionAdapter>());
        }

Probowałem korzystać z przykladów są one np w prism 4 czy 6 z uzyciem MEF który jest w 7 deprecated
no i nie udaje mi się
Jakie powinno być podejście do ribbona?

z góry dziękuję za pomoc

edytowany 1x, ostatnio: jakubek
mr-owl
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad rok
  • Postów:206
0
jakubek napisał(a):
mr-owl napisał(a):

Witam,

Użyj RegionAdapter-a.

Pozdrawiam,
mr-owl

Bardzo dziękuję za poradę
teraz poziom trudności wzrasta

Prism, devexpress, WPF, Ribbon

O ile już ogarnalem jak to wszystko połaczyć - to z ribbonem nie działa

Main Window

Kopiuj

            <dxr:RibbonControl Name="shellRibbonControl" DockPanel.Dock="Top" prism:RegionManager.RegionName="{x:Static core:RegionNames.RibbonPageRegion}">
                <dxr:RibbonDefaultPageCategory />
            </dxr:RibbonControl>

Moduł

Kopiuj
regionManager.RegisterViewWithRegion(RegionNames.RibbonPageRegion, typeof(ModuleARibbonPage));

Adapter

Kopiuj
public class RibbonControlRegionAdapter: RegionAdapterBase<RibbonControl>
    {
public RibbonControlRegionAdapter(RegionBehaviorFactory regionBehaviorFactory)
            : base(regionBehaviorFactory)       {        }

        protected override void Adapt(IRegion region, RibbonControl regionTarget)
        {
            region.Views.CollectionChanged += (s, e) =>
            {
                if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
                {
                   
                }
                else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
                {

                }
            };
        }

        protected override IRegion CreateRegion()
        {
            return new AllActiveRegion();
        }
    }
}

App.xaml.cs

Kopiuj
 protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings)
        {
            base.ConfigureRegionAdapterMappings(regionAdapterMappings);
            regionAdapterMappings.RegisterMapping(typeof(RibbonControl), Container.Resolve<RibbonControlRegionAdapter>());
        }

Probowałem korzystać z przykladów są one np w prism 4 czy 6 z uzyciem MEF który jest w 7 deprecated
no i nie udaje mi się
Jakie powinno być podejście do ribbona?

z góry dziękuję za pomoc
Ten adapter to jakiś biedny Ci wyszedł poza tym dokładnie gdzie chcesz "wstrzykiwać" elementy z modułu prism-a? Bo mam problem by znaleźć właściwy "placeholder" w twoim kodzie.

Pozdrawiam,

mr-owl

P.S. Upewnij się że RegionAdapter jest ustawiony na właściwy typ (np Tab z Ribbon-a) i czy masz właściwy placeholder ustawiony.

JA
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad rok
0

dzięki za odpowiedź
chodzi o to, że ze zwykłym (standardowy wpf) ribbonem działa,a z ribbonem z devexpress już nie

co ciekawe
gdy mam taki kod

Kopiuj
 <ContentControl prism:RegionManager.RegionName="{x:Static core:RegionNames.RibbonRegion}" />

to region "wstaje" i sa ładowane tam kontrolki

a gdy region jest ribbonem

Kopiuj
<xmlns:dxr="clr-namespace:DevExpress.Xpf.Ribbon;assembly=DevExpress.Xpf.Ribbon.v20.1"/>
 <dxr:RibbonControl DockPanel.Dock="Top" MDIMergeStyle="Always" prism:RegionManager.RegionName="{x:Static core:RegionNames.RibbonRegion}">

to region nie "wstaje" - kontrolki się nie ładują
i nie rozumiem czemu

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.