Moinmoin,
wie kann man TabControl, TabItem und anderen WPF-Layoutcontainer (z.B. DockPanel) ableiten oder über einen bestimmten Namespace im Xaml zur Verfügung stellen ?
Hintergrund ist folgender:
Paralell baue ich einen Silverlight und einen WPF-Client, wobei das Layout nur einmalig definiert wird. Leider befinden sich bei Silverlight nicht alle im gleichen namespace, da einige Steuerelemente in einem anderen Assembly von Microsoft implementiert wurden.
Im folgenden Beispiel funktioniert das einwandfrei, da StackPanel und TextBlock im Defaultnamespace zu finden sind. Das TabControl ist in WPF auch im Defaultnamespace, aber bei Silverlight im "my"-Namespace.
Neutrales Layout:
XML-Daten
1: 2: 3:
| <StackPanel> <TextBlock>Test</TextBlock> </StackPanel> |
Silverlight:
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <UserControl xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Extended" x:Class="SilverlightApplication3.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"> <StackPanel> <TextBlock>Test</TextBlock> </StackPanel></UserControl> |
WPF:
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <StackPanel> <TextBlock>Test</TextBlock> </StackPanel></Window> |
Bei den "normalen" Steuerelementen bin ich ohnehin hingegangen und habe diese in UserControls gekapselt, da hier auch nicht immer die MS-Origanlsteuerelemente zum Einsatz kommen. Nur bei den Layoutcontainern habe ich noch keinen weg gefunden, die in einem eigenen Namespace bzw. einer Ableitung unter zu bringen.
Gruß
Norbert
Moderiert von Christian S.: B-Tags durch XML- bzw. Highlight-Tags ersetzt