Set IsEnabled-Eigenschaft des ComboBox-Basierend auf SelectedItem
Will ich aktivieren/deaktivieren, ComboBox, basierend auf, wenn es ein Element ausgewählt, die in einem anderen ComboBox-Steuerelement. Ich war in der Lage, um es arbeiten durch die Einstellung eines triggers auf den Style an, aber das überschreibt meine benutzerdefinierten globalen Stil für die combobox. Gibt es einen anderen Weg, um die gleiche Funktionalität zu erhalten, ohne zu verlieren mein Stil?
<ComboBox Grid.Column="1" Grid.Row="1"
Name="AnalysisComboBox"
MinWidth="200"
VerticalAlignment="Center" HorizontalAlignment="Left"
ItemsSource="{Binding Path=AvailableAnalysis}">
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem,ElementName=ApplicationComboBox}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
FWIW, ich habe diese Arbeit mit einem Stil und ich bevorzuge, dass für den Konverter denn es ist alles in XAML. Ich brauchte nicht ein setter, um anzugeben, dass die IsEnabled-Eigenschaft der Wert true sein sollte, wenn der trigger ist nicht aktiv. Ich bin dieses posting für die anderen, die in dieser Frage, so dass Sie nicht den Eindruck, dass es nicht getan werden kann mit eine Stil.
InformationsquelleAutor KrisTrip | 2011-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht, dies zu tun via einem Stil, können Sie binden Sie die IsEnabled-Eigenschaft, indem Sie direkt einen Wert Konverter wie folgt:
Wo NullToFalseConverter ist ein Schlüssel zu einer Instanz der followsing Konverter:
Sie müssen tatsächlich deklarieren Sie eine Instanz des Konverters, irgendwo. Beachten Sie, dass @ColinE verweist, die es als
StaticResource
. Das heißt, Sie müssen einen Eintrag in der Ressourcen-Sammlung von was auch immer enthält die ComboBox, die wie folgt aussieht:<NullToFalseConverterClass x:Key=NullToFalseConverter/>
Ich denke, dass die Umsetzung der Konverter ist falsch, es sollte <Rückgabewert != null - > und es ist nicht erforderlich tun, deklarieren Sie eine Instanz. Zumindest habe ich gar keine und es funktioniert.
InformationsquelleAutor ColinE
Ja, Sie können
BasedOn
Attribut "Erben" Ihrer globalen Stil:Statt
{StaticResource {x:Type ComboBox}}
können Sie die Taste Sie den globalen Stil (wenn es nicht implizit).Aber für diese Aufgabe brauchen Sie nicht, um einen Stil definieren. Können Sie nur setzen eine Bindung an die IsEnabled-Eigenschaft und verwenden Sie einen Konverter zum konvertieren ausgewählter Artikel von einen anderen combo-box, um einen booleschen Wert:
InformationsquelleAutor Pavlo Glazkov
Man könnte einfach eine "normale" Bindung, mit einem Wert Konverter für das ändern der "Wert vorhanden" => true, "Wert ist null" => false.
InformationsquelleAutor Daniel Rose