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 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
<dxr:RibbonControl Name="shellRibbonControl" DockPanel.Dock="Top" prism:RegionManager.RegionName="{x:Static core:RegionNames.RibbonPageRegion}">
<dxr:RibbonDefaultPageCategory />
</dxr:RibbonControl>
Moduł
regionManager.RegisterViewWithRegion(RegionNames.RibbonPageRegion, typeof(ModuleARibbonPage));
Adapter
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
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
jakubek napisał(a):
mr-owl napisał(a):
Witam,
Użyj RegionAdapter-a.
Pozdrawiam,
mr-owlBardzo dziękuję za poradę
teraz poziom trudności wzrastaPrism, devexpress, WPF, Ribbon
O ile już ogarnalem jak to wszystko połaczyć - to z ribbonem nie działa
Main Window
<dxr:RibbonControl Name="shellRibbonControl" DockPanel.Dock="Top" prism:RegionManager.RegionName="{x:Static core:RegionNames.RibbonPageRegion}"> <dxr:RibbonDefaultPageCategory /> </dxr:RibbonControl>
Moduł
regionManager.RegisterViewWithRegion(RegionNames.RibbonPageRegion, typeof(ModuleARibbonPage));
Adapter
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
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.
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
<ContentControl prism:RegionManager.RegionName="{x:Static core:RegionNames.RibbonRegion}" />
to region "wstaje" i sa ładowane tam kontrolki
a gdy region jest ribbonem
<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