PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XAML und unterschiedliche Styles für mehrere Slider


Xenton
2014-04-05, 20:11:28
Hi,

Ich habe folgendes Problem, da ich u.a. mit XAML etwas auf dem Kriegsfuß stehe.

Wie der Titel schon verrät, möchte ich in XAML für diverse Slider jeweils einen eigenen Style geben.

Natürlich sind das recht wenig Informationen.

Ich benötige dieses Wissen, da ich für einen Car PC ein Skin für ein Frontend erstellen will

Die Software heißt cPOS.Net und ich habe dort schon im Forum nachgefragt, wie man das hinbekommen könnte, und nur Hinweise auf den default Skin bekommen.
Das default Skin und Skins, die man da runterladen kann, definieren einen einzigen Style für alle Slider.

Um noch ein wenig Code zu liefern, hier der XAML Teil mit dem allgemein ein Slider Style in cPOS definiert wird.

<ImageSource x:Key="cpSlider1">DefaultResources\mediasliderback.jpg</ImageSource>

<Style x:Key="SliderButtonStyle" TargetType="{x:Type RepeatButton}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<Border Background="Transparent" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

<Style x:Key="SliderThumbStyle" TargetType="{x:Type Thumb}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Image Name="Button"
Source="{DynamicResource cpSlider1}"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>



Hier mal zum vergleich, wie man jeden einzelnen Button einen Style definieren kann:

<ImageSource x:Key="imgbtnCPExit">buttons\Exit.png</ImageSource>

<Style x:Key="cPOSTheme:btnCPExit" TargetType="{x:Type local:cpcButton}">
<Setter Property="ImageFile" Value="{StaticResource imgbtnCPExit}"/>
</Style>



im Bereich des Style x:key steht mir für den Inhalt cPOSTheme:freiWählbar und für local = local:cpcSlider zur Verfühgung.

Die Frage ist, wie schreibe ich den Style für alle so um, dass ich für jeden einzelnen Slider einen separaten Style bekomme ?

Habe schon ein wenig rumprobiert, natürlich habe ich schon im I-Net die MSDN gelesen, aber selbst da stiege ich nicht beim Slider durch, bzw wenn ich mal durchsteige, ist es immer eine allgemeine Definition für alle Slider.


MFG Xenton

PatkIllA
2014-04-05, 21:16:08
Und wo wird der Slider erstellt?
Beim konkreten Slider stehen ja direkt eingestellten Werte und auch der Style. Und solange du da nicht rankommst sehen die alle gleich aus.

Monger
2014-04-05, 21:52:07
Was für ein XAML Dialekt ist das eigentlich? WPF? Silverlight? Metro?
Aber ja: die Styles sind ja jeweils an den Typus rangeflanscht. Sprich: die gelten dann als Default für alle Slider die sich hierarchisch darunter befinden. Wenn du unterschiedliche Controls unterschiedlich stylen willst, musst du den Style mindestens mal als Extension Property an die dazugehörige Hierarchie anfügen, oder halt an jedes Control das davon betroffen ist.

Xenton
2014-04-05, 23:10:06
Der Dialekt ist WPF

Im Anhang Bild a1 habe ich mal aus dem Skin Editor, erstellt nur das Skin aber nicht den Style, ein Screen ausgeschnitten, mit dem Einstellmöglichkeiten.

Erinnern tut mich der Slider aus Visual Studio, von den möglichkeiten her.


Im Anhang Bild a5, sind die Einstellmöglichkeiten aus dem Skin Editor für einen Button.



Mein Gedankengang beim Style für jeden einzelnen Slider, ist wie folgt, dass ich den allgemeinen Teil in einen Template packe und ihn wie bei einem Button Aufrufe, wie z.B:

<ImageSource x:Key="cpSlider1">DefaultResources\mediasliderback.jpg</ImageSource>

<Style x:Key="cPOSTheme:styleSLServo1" TargetType="{x:Type local:cpcSlider}">
<Setter Property="Template">
<Setter.value>
<ControlTemplate TargetType="{x:Type ???}">



<Style x:Key="SliderButtonStyle" TargetType="{x:Type RepeatButton}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<Border Background="Transparent" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

<Style x:Key="SliderThumbStyle" TargetType="{x:Type Thumb}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Image Name="Button"
Source="{DynamicResource cpSlider1}"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>





</ControlTemplate>
</Setter.value>
</Style>


So in der Art.

Der Gedankegang ist halt, dass ich mittels eines Übergeordneten Elements, den ich im Editor (siehe Bild a1) definieren kann, aufrufe und dann Thumb und Repeatbutton Stylen kann.

Aber Im Car PC Forum kam schon auf, dass das im Skin nicht vorgesehen ist, und haben mich an den Programmierer verwiesen. Der hat bis jetzt noch nicht geantwortet :( Kann natürlich sein, dass der Programmierer selber ne Möglichkeit sucht ;)

Anfrage im Car PC Forum hatte ich am 30.3. gestellt, nur zur Info, denn mein Text liest sich als, ob ich hier und dort gleichzeitig geschrieben habe ;)

Xenton
2014-04-16, 12:01:15
Hat sich erledigt.

Der Programmierer hat geantwortet, er hatte es im Code, fälschlicher Weise, nicht vorgesehen, dass jeder Slider einzeln Designbar ist.


Habe nun eine aktualisierte cPos Testversion, und nun kann man die Slider einstellen :)