Laden...

Kann man Element.Style, StaticResource und einen Style.Trigger miteinander nutzen?

Erstellt von echdeneth vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.116 Views
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren
Kann man Element.Style, StaticResource und einen Style.Trigger miteinander nutzen?

Moin, ich habe eine Combo und möchte für ein Projekt die Visibility von Datumsfeldern basierend auf der Auswahl des ComboItems einstellen, an sich keine große Sache.
Ich verwende jedoch MaterialDesignThemes von James Willock.

Das ganze sähe so aus:


                        <DatePicker VerticalContentAlignment="Center" 
                                    HorizontalContentAlignment="Right" 
                                    materialDesign:HintAssist.Hint="Von:" 
                                    FontSize="18"
                                    x:Name="D_BelegVon"
                                    Foreground="Black" 
                                    Width="220"
                                    SelectedDateChanged="d_Von_SelectedDateChanged"
                                    Visibility="{Binding IsSelected,ElementName=Combo_Beleg}">
                            <DatePicker.Style>
                                <Style Resources="{StaticResource MaterialDesignFloatingHintDatePicker}">
                                    <Setter Property="DatePicker.Visibility" 
                                            Value="Hidden"/>
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding ElementName=Combo_Datumsauswahl, Path=SelectedItem.Tag}" 
                                                     Value="Show">
                                            <Setter Property="DatePicker.Visibility" Value="Visible"/>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </DatePicker.Style>
                        </DatePicker>

Die Stelle mit :

 <Style Resources="{StaticResource MaterialDesignFloatingHintDatePicker}"> 

funktioniert nicht - es soll
die zugrunde liegende Idee kommuniziert werden.

Ich würde ansonsten selbiges im CodeBehind realisieren, wüsste jedoch ob das mit MaterialDesign und XAMLgeht.

Danke

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

1.040 Beiträge seit 2007
vor 4 Jahren

2 Fehler die ich auf Anhieb sehe:

  1. Du darfst die Visibility nicht im DatePicker setzen, wenn du sie über den Style setzen möchtest (Zeile 9)

  2. In Zeile 11 muss statt Resources="" ein BasedOn="" genutzt werden.

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren
  1. Stimmt
  2. Da kommt: Kann nur auf &quot;Style&quot; mit einem Zieltyp basieren, bei dem es sich um den Basistyp &quot;IFrameworkInputElement&quot; handelt. ?(
Hinweis von Abt vor 4 Jahren

Bitte keine Full Quotes

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

1.040 Beiträge seit 2007
vor 4 Jahren

Zum zweiten Punkt, folgendes funktioniert ohne Probleme:

<DatePicker>
	<DatePicker.Style>
		<Style TargetType="DatePicker" BasedOn="{StaticResource MD_DatePickerStyle}">
			<Setter Property="Foreground" Value="HotPink" />
		</Style>

	</DatePicker.Style>
</DatePicker>

Könnte sein, dass das fehlende TargetType das Problem war.

Generell kannst du auch ins Output gucken, falls es Probleme mit dem Binding gibt.

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

Schau ich mal

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein