IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Euh le theme ne m'aime pas !


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut Euh le theme ne m'aime pas !
    Bonjour

    voici un petit xaml pour vous mettre en bouche
    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <Window x:Class="SentinelSAS.Window2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:skins="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Luna"
        Title="Window2" Height="465" Width="300">
     
        <Window.Resources>
     
            <Style x:Key="MyComboBoxStyle" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
                <Style.Resources>
                    <ResourceDictionary />
                </Style.Resources>
                <Setter Property="SnapsToDevicePixels" Value="true"/>
                <Setter Property="OverridesDefaultStyle" Value="true"/>
                <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
                <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
                <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
                <Setter Property="MinHeight" Value="20"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ComboBox">
                            <StackPanel Orientation="Horizontal">
                                <ToggleButton 
                                      Name="ToggleButton" 
                                      Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"
                                      Background="{TemplateBinding Panel.Background}"
                                      Focusable="false"
                                      IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}"
                                      ClickMode="Press"
                                >
                                </ToggleButton>
                                <Popup 
                                      Name="Popup"
                                      Placement="Bottom"
                                      IsOpen="{TemplateBinding IsDropDownOpen}"
                                      Focusable="False"
                                      AllowsTransparency="True"
                                      PopupAnimation="Slide">
                                      <skins:SystemDropShadowChrome 
                                            Color="#00FFFFFF" 
                                            Name="Shdw" 
                                            MinWidth="{TemplateBinding FrameworkElement.ActualWidth}" 
                                            MaxHeight="{TemplateBinding ComboBox.MaxDropDownHeight}">
                                            <Border BorderThickness="1,1,1,1" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" Name="DropDownBorder">
                                                <ScrollViewer>
                                                    <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" KeyboardNavigation.DirectionalNavigation="Contained" />
                                                </ScrollViewer>
                                            </Border>
                                        </skins:SystemDropShadowChrome>
                                </Popup>
                            </StackPanel>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Window.Resources>
     
     
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="74*" />
                <RowDefinition Height="58*" />
                <RowDefinition Height="18*" />
                <RowDefinition Height="30*" />
                <RowDefinition Height="82*" />
            </Grid.RowDefinitions>
     
            <DockPanel Grid.Row="1" x:Name="dockPanel1" >
     
                <ComboBox DockPanel.Dock="Right"   
                          Width="20"
                          Style="{StaticResource MyComboBoxStyle}"
                          x:Name="combox2" Grid.RowSpan="3">
                    <ComboBoxItem>alpha sdsdfgdfgg</ComboBoxItem>
                    <ComboBoxItem>alpha</ComboBoxItem>
                    <ComboBoxItem>alphadfgdfgdfgdfdfdfdfgdfgdfgg</ComboBoxItem>
                    <ComboBoxItem>alpha</ComboBoxItem>
                    <ComboBoxItem>alpha</ComboBoxItem>
                    <ComboBoxItem>alpha</ComboBoxItem>
                </ComboBox>
                <ToggleButton></ToggleButton>
                <Label Content="alpha" Background="Orange"></Label>
     
            </DockPanel>
            <ComboBox Grid.Row="3" Name="comboBox1" />
            <ListBox Grid.Row="4" Margin="8,13,0,21" 
                     ItemsSource="{Binding Path=Keys}"
                     x:Name="listBox1" HorizontalAlignment="Left" Width="120" />
            <Button Grid.Row="4" Height="36" HorizontalAlignment="Right" Margin="0,14,37,0" Name="button1" VerticalAlignment="Top" Width="100" Click="button1_Click">Button</Button>
            <Button Grid.Row="4" HorizontalAlignment="Right" Margin="0,59,31,32" Name="button2" Width="105">Button</Button>
        </Grid>
    </Window>
    voici donc mon probleme ....
    vous avez note que je redefini la combobox en profitant pour supprimer quelques truc qui ne m'interesse plus du tout ...

    par contre j'aimerais assez que mon bouton tooglebutton soit le meme
    que celui de la combo box du theme standard

    ainsi si je colle le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <ToggleButton 
                                      Name="ToggleButton" 
                                      Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"
                                      Background="{TemplateBinding Panel.Background}"
                                      Focusable="false"
                                      IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}"
                                      ClickMode="Press"
                                >
                                </ToggleButton>
    sur vista ca va a peut pres mais bon y manque la fleche vers le bas
    sur xp c'est pas du tout top (!)
    comment faut t'il faire pour binder le template (ou le style) de mon toggle button sur le template du combobox.togglebutton du theme en cours

    j'ai un autre probleme un poil recurrant et semble t-il
    c'est que j'ai le meme probleme avec le style ou le template du popup
    (j'ai pas mis les triggers sur le hasdropshadow de celui ci mais promis je va le faire .... )

    merci pour vos reponses

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Citation Envoyé par ikeas
    comment faut t'il faire pour binder le template (ou le style) de mon toggle button sur le template du combobox.togglebutton du theme en cours
    Tu voudrais détecter le thème utilisé sur la machine où est installée l'application, pour choisir quel style de toggleButton il te faut appliquer ?

    J'ai peut-être mal compris car j'ai rarement vu une application s'adapter au thème utilisé.
    Sinon pour faire en sorte d'avoir le même style de toggleButton pour tous les contrôles utilisant un toggleButton, tu peux faire de la façon suivante :
    - définir le style toggleButton qui te convient dans le ResourceDictionary de la façon habituelle
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Style TaregtType="x:Type ToggleButton">
      <!-- blabla -->
    </Style>
    et c'est tout

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    euh ben en fait c'est pas vraimant le theme du tooglebutton standard
    mais celui du tooglebutton de la combobox

    y'a une petit difference en effet le tooglebutton standart ne possede pas la petite fleche
    et pour la fenetre deroulante c'est un peut le meme probleme

    en fait ce que je souhaite realiser c'est une combobox sans le textbox et le border inclu dans celle ci ....

    en preservant le theme courant

    je vais t'expliquer clairement ce que j'ai fait
    dans le header de la column je colle ma combobox sans le text et le border
    et dans cette combo bo j'affiche la totalite d'une enum flagé [flags]
    avec des case a cocher que je peux selectionner et qui me permet
    de changer l'affichage .... (et la ca fonctionne etonnant hein ?)

    si tu veux je peux te send ou mettre ici le code complet

Discussions similaires

  1. GCC n'aime pas #include <linux/sched.h>
    Par gilux dans le forum Linux
    Réponses: 3
    Dernier message: 29/01/2006, 22h09
  2. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo