Bonjour,
Je souhaite créer une classe dérivant de ContentControl pour implémenter un deuxième Content.
En effet ContentControl contient un objet Content pour y mettre.. et bien du contenu et je souhaite avoir deux contenu un peu comme les expender du toolkit.
Motivation du besoin en fin de page.
Soit le code super allégé
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class DoubleContent : ContentControl { public DoubleContent() { this.DefaultStyleKey = typeof(DoubleContent); } public static readonly DependencyProperty HeaderContentProperty = DependencyProperty.Register("HeaderContent", typeof(object), typeof(DoubleContent), null); public object HeaderContent { get { return (object)GetValue(HeaderContentProperty); } set { SetValue(HeaderContentProperty, value); } } }
En fait le HeaderContent peut être null au départ ou varier en fonction du contexte.
Càd changer plusieurs fois après la création de l'objet.
En mode proto cad avec un controle header existant dès le départ tout le système fonctionnait.
En ajoutant le même header après création c'est le bronx on voit en debug dans les measure et autres ArrangeOverride que l'objet prend systématiquement une hauteur 0.
Un bout de xaml si ça peu aider à m'aider. (ou on voit les 2 contentControl)
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <Style TargetType="local:DoubleContent"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="local:DoubleContent"> <Canvas x:Name="RootElement" Background="Transparent" > <ContentControl Canvas.Left="0" Canvas.Top="0" Background="Blue" x:Name="HeaderElement" Content="{TemplateBinding HeaderContent}"/> <ScrollViewer x:Name="ScrollElement" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Padding="0" BorderThickness="0" > <ContentControl Background="Blue" x:Name="ContentElement" Content="{TemplateBinding Content}" /> </ScrollViewer> </Canvas> </ControlTemplate> </Setter.Value> </Setter> </Style>
Motivation du besoin (ça peut aider à comprendre ) mon fardeau : avoir un control inconnu à la compile qui viendra par custo enduser se placer dans le Header (et les objets existant StackPanel et autres Grid ne peuvent rendre le service attendu à cause du système de placement spécifique)
J'ai épluché, comme j'ai pu le source du toolkit de codeplex, pour trouver de l’inspiration, c'est trop chaud pour moi (et sans doc pas cool pour comprendre si les techniques peuvent s'appliquer à mon besoin)
Merci aux courageux qui auront lu jusqu'ici
Partager