Versuchen, Weg zu finden, um das folgende Problem zu lösen.Wie DataTrigger für Parent-Element aus Child-Element-Bedingung
Mein Ziel ist: Wenn ein Kind-Element in Button nicht den Text enthält, dann deaktiviert die Eltern-Schaltfläche.
Also, was genau ich versuche:
Erstellen Sie eine Schaltfläche:
<Button Style="{StaticResource ButtonStyle}" >
<TextBlock>
<Run Name="TxtElement1" Text=""/>
</TextBlock>
</Button>
<Button Style="{StaticResource ButtonStyle}" >
<TextBlock>
<Run Name="TxtElement2" Text="some text 1"/>
</TextBlock>
</Button>
<Button Style="{StaticResource ButtonStyle}" >
<TextBlock>
<Run Name="TxtElement3" Text="some text 2"/>
</TextBlock>
</Button>
nun einen Stil mit Trigger erstellen:
<Style x:Key="ButtonStyle" TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=TxtElement1, Path=Text}" Value="">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=TxtElement2, Path=Text}" Value="">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=TxtElement3, Path=Text}" Value="">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
Also, in Folge bekam ich: Alle ToggleButtons sind deaktiviert. Aber ich brauche nur Button deaktivieren, wenn Eigenschaft Text in Run Kind-Element ist leer
Vielleicht bin ich radikal falsch Ansatz verwenden .. Danke für jede Aufmerksamkeit.
Tbh, das macht überhaupt keinen Sinn ... Warum würdest du deine Buttons auch so stylen? Verwenden Sie den Inhalt des Buttons und machen Sie einen selbst bindenden – lokusking
In meinem Fall verwende ich wenige Quelle für den Button Inhalt.Schauen Sie ist wie: ' ' –
Okay. Schön für dich. Ändert nicht die Tatsache, dass es wirklich seltsam ist und dass das nicht funktioniert. Der Style ist ** vor ** Ihren Buttons definiert und hat daher keine Kenntnisse über den Inhalt der Buttons (was Sie eigentlich für einen einfachen Text verwenden sollten). Ein Workaround könnte ein 'ControlTemplate' oder Behavior oder CodeBehind sein. Aber mit Plain XAML wirst du eine schlimme Zeit haben – lokusking