Winforms Component style RocketDock

Bonjour la zone,

je suis à la recherche d’un composant winform (payant ou non) qui ferait un peu ce que fait RocketDock (http://rocketdock.com/) sous windows ou tout simplement le dock de Mac OS.

J’aimerai notamment binder les icônes depuis une source de données externe (fichier XML).
Bref en gros RocketDock avec une API .Net ce serait l’idéal.

Donc je m’en remet à vous ; Connaitriez-vous un composant winform se rapprochant de ce que je recherche ?

Merci :wink:

Fort ça, j’ai justement une demande d’un mec sur une liste de diffusion au taff parlant de ça :smiley:

Bon sinon, je connais que des trucs en JS se rapprochant de ça, donc si c’est pas suffisant, j’ai pas :smiley:

[quote=« Gratz, post:2, topic: 50462 »]Fort ça, j’ai justement une demande d’un mec sur une liste de diffusion au taff parlant de ça :slight_smile:

Bon sinon, je connais que des trucs en JS se rapprochant de ça, donc si c’est pas suffisant, j’ai pas :D[/quote]

Le mec ça doit être moi :smiley:

C’est pour integrer dans une appli ou pour faire un dock perso ? Parce que, une fois que tu auras regardé du coté des 6 grands et que t’auras rien trouvé, il te faudrat une autre solution :smiley:

6 grands éditeurs (Telerik, Infragistics…) ??? Ouai j’ai regardé mais rien… :’( Non ce n’est pas perso, c’est pour un client… Il veut quelque chose d’assez propre… (et en Winform :’()

Pour les 4 qu’il te manque, je dirais :

http://www.actiprosoftware.com/
http://www.devexpress.com/
http://www.divelements.com/net/
http://www.componentfactory.com/

a coté des classique telerik et infragistics.

Mais si tu explicites un peu plus ton besoin, on pourra ptet t’orienter un peu plus.

En fait je cherche un composant qui se présente sous la forme du dock MacOSX (ou rocketdock) où je pourrais ajouter des icônes via programmation… j’attend idéalement du composant, qu’il gère tout l’aspect graphique/layout (position dynamique des icônes, dock haut/bas/gauche/droite).

J’espère que je suis clair dans mes explications. :smiley:

Petite question vite fait : est-ce que ce serait (beaucoup) plus simple de faire ça en WPF ???

Merci pour vos éclaircissements :smiley:

Ya des chances ouais.

C’est même sûr

A partir du moment où tu connais bien WPF… Tu prends une Listbox, tu la restylise/templatise, (la listbox elle meme et les ItemContainerStyles), et c’est finit, au moins pour une version basique.
Si tu veux pousser le vice jusqu’à gérer l’effet wavy sur les éléments autour de celui qui a le mouseover, tu peux aussi hériter d’ItemsControl et modifier les ScaleTransform à la mano… à tout casser, y’en a pour 2-3 heures de dev pour prototyper ca par un gars qui y touche sa bille.

Tu veux pas toucher ma bille?

Ok ok :smiley:

Ptain t’as vu des Dpe fr y’a pas longtemps ou quoi ? ^^

Ok, Merci pour vos réponses :smiley:

Haha en plus oui c’est vrai!

Dans un premier temps je vais faire une version simple. Donc ça c’est bien passé mais j’ai voulu stylé les listboxItem de ma listbox pour qu’il y ait un effet de zoom quand on passe la souris. Et là ça c’est un peu compliqué. J’ai fait un petit essai avec Blend mais j’ai l’impression qu’il me génère des choses dont je n’ai pas besoin.

Donc de ce que j’ai compris (et vu surtout) c’est qu’il faut que je créé un storyboard pour mon animation, que je crée un style que j’applique à mes ListBoxItems et que dans ce style j’appelle mon storyboard. Mais par quoi je passe ? Un ControlTemplate ? c’est un peu confus. (Sachant que j’ai déjà un datatemplate qui formatte déjà mes listboxitems.

PS : ici le code généré par Blend :

[code]
<Window.Resources>






<Setter.Value>

<ControlTemplate.Resources>














</ControlTemplate.Resources>

<Border.RenderTransform>






</Border.RenderTransform>


<ControlTemplate.Triggers>

<Trigger.EnterActions>

</Trigger.EnterActions>


<MultiTrigger.Conditions>


</MultiTrigger.Conditions>






</ControlTemplate.Triggers>

</Setter.Value>


</Window.Resources>

<Grid x:Name="LayoutRoot">
	<ListBox HorizontalAlignment="Left" Margin="144,120,0,192" Width="81" ItemContainerStyle="{DynamicResource ListBoxItemStyle1}">
		<ListBoxItem Content="ListBoxItem"/>
		<ListBoxItem Content="ListBoxItem"/>
	</ListBox>
	<ListBox HorizontalAlignment="Right" Margin="0,193.5,104.5,148.5" Width="100">
		<ListBoxItem Content="ListBoxItem"/>
		<ListBoxItem Content="ListBoxItem"/>
		<ListBoxItem Content="ListBoxItem"/>
	</ListBox>
</Grid>

[/code]

EDIT :

Bon, au final j’ai fait ça (qui reste largement inspiré de ce que Blend a généré :

  • Créer un style qui redéfinit un la propriété Template avec un nouveau ControlTemplate
  • Dans ce ControlTemplate je crée 2 storyboard en ressources, qui contient mes animations (zoom arrière et zoom avant).
  • Ensuite je définis les triggers MouseEnter et MouseLeave pour lancer les storyboard adéquats.

Il reste une chose que je n’ai pas tout à fait comprit, c’est le fait de devoir mettre une bordure pour définir le scaleTransform, si vous pouviez m’éclaircir sur ce sujet, ce serait cool :smiley:

Voici la tête de mon style :

<Style TargetType="{x:Type ListBoxItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListBoxItem}"> <ControlTemplate.Resources> <Storyboard x:Key="RollOverAnim"> <DoubleAnimation Duration="0:0:0.1" AutoReverse="False" Storyboard.TargetName="Bd" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" From="1" To="1.5" /> <DoubleAnimation Duration="0:0:0.1" AutoReverse="False" Storyboard.TargetName="Bd" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" From="1" To="1.5" /> </Storyboard> <Storyboard x:Key="RollOutAnim"> <DoubleAnimation Duration="0:0:0.1" AutoReverse="False" Storyboard.TargetName="Bd" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" From="1.5" To="1" /> <DoubleAnimation Duration="0:0:0.1" AutoReverse="False" Storyboard.TargetName="Bd" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" From="1.5" To="1" /> </Storyboard> </ControlTemplate.Resources> <Border x:Name="Bd" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" RenderTransformOrigin="0.5,0.5"> <Border.RenderTransform> <TransformGroup> <ScaleTransform/> </TransformGroup> </Border.RenderTransform> <ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </Border> <ControlTemplate.Triggers> <EventTrigger RoutedEvent="MouseEnter"> <BeginStoryboard Storyboard="{StaticResource RollOverAnim}"/> </EventTrigger> <EventTrigger RoutedEvent="MouseLeave"> <BeginStoryboard Storyboard="{StaticResource RollOutAnim}"/> </EventTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>