Plus d'espoir?
Version imprimable
Plus d'espoir?
Tu veux pas nous envoyer carrément un projet Visual Studio avec juste une combobox et ton problème dedans ?
J'ai trouvé le problème, cela vient du fait que ma classe hérite de System.Windows.Control, si j'enlève ça marche, mais bon, j'ai absooluement d'hériter de cette classe! J'ai joint un projet (bidon)
Merci de ton idée, ça m'avance déjà!
Ok !!
En fait il faut que tu donnes un style par défaut à ton control !
La tu lui en as pas donné alors ils utilise rien... !
Je vais voir pour te filer un exemple :)
Euh sinon... pourquoi il faut ABSOLUMENT qu'il dérive de Control ?
Edit: Apparemment (lien a l'appui :) ), la combobox utilise un template différent pour l'item sélectionné et ceux du dropDown...
Une solution est de redéfinir le template de la combobox pour qu'il utilise le bon. Le contentPresenter serait alors utilisé comme cela:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <ContentPresenter IsHitTestVisible="false" Margin="8,1,1,1" Content="{TemplateBinding SelectionBoxItem}" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
Mais encore une fois sinon : pourquoi il faut ABSOLUMENT qu'il dérive de Control ?
Alors il doit en hériter car mon objet doit etre utilisé comme un Control (event drag drop click content etc...) (Please me fait pas changer mon model:oops:, puis le projet que j'ai envoyé est vraiment bidon, y'a rien de rationnel dedans...)
Sinon j'avais regarder pour le ContentPresenter, j'ai essayé, pas encore avec ton code, ça n'avait pas fonctionné, ça se trouve parce que je l'utilise mal, comment tu l'utiliserai avec mon exemple?
Cordialement,
Euh ok mais je comprends pas pourquoi tu utilises pas une classe normale pour contenir les infos de ton airport et un dataTemplate avec ton usercontrol spécifique pour les représenter ?
Sinon, j'irais dans Blend, je ferais une copie du template par défaut et je changerai le code du ContentPresenter pour mettre celui que je t'ai donné avant...
J'ai pas blend...Y'a pas moyen de faire ça simplement sur VS?
Tu as tout sur MSDN ;) : http://msdn.microsoft.com/en-us/libr...94(VS.85).aspx
Voilà ce que j'ai fait:
Mais il semble y avoir un problème avec SelectedItemTemplate:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 .Resources > <Style x:Key="AirportZoneComboBox" BasedOn="{StaticResource {x:Type ComboBox}}" TargetType="{x:Type ComboBox}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ComboBox"> <Grid> <ContentPresenter IsHitTestVisible="false" Content="{TemplateBinding SelectedItem }" ContentTemplate="{TemplateBinding SelectedItemTemplate }" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources>
Citation:
Error 1 Cannot find the static member 'SelectedItemTemplateProperty' on the type 'ComboBox'.
okay ça marche, mais y'a pas moyen de faire plus rapidement car là j'ai reécréer entièrement un control ComboBox pour pour juste modifier deux propriétés, c'est assez crade nan?
Non, tu n'as pas d'autres moyens qui me viennent à l'esprit.
Ce n'est pas crade, tu utilises les possibilités de templating de WPF.
Par contre je suis bien d'accord que c'est fastidieux.... :|
Ouais, mais dans mon cas, c'est comme une classe qui a une propriété virtual qui a un comportement par défaut, et moi ce que je veux faire c'est juste l'overrider. C'est bien dommage que ça ne marche pas comme ça...