WPF binding basiert auf dem Vergleich

Gibt es eine relativ einfache Sache, die ich versuche zu erreichen, aber ich bin mir nicht sicher, wie es zu tun. Im Grunde genommen habe ich eine CLR-Klasse wie folgt:

class SomeClass
{
    public SomeEnum Status;
}

public enum SomeEnum { One, Two, Three };

Ich habe ein DataGrid, dass ich die Bindung eines ObservableCollection<SomeClass> programmgesteuert durch den code-behind. In diesem DataGrid-ich habe eine DataGridTemplateColumn mit zwei Schaltflächen, wie folgt:

<toolkit:DataGridTemplateColumn Header="Actions">
    <toolkit:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
    <StackPanel Orientation="Horizontal">
        <Button Content="ActionOne" />
        <Button Content="ActionTwo" />
    </StackPanel>
    </DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

Was ich will zu tun ist, binden Sie die IsEnabled-Eigenschaft auf diese Tasten, um einen Vergleich basierend auf dem Wert von {Binding Path=Status}. Zum Beispiel in pseudocode:

ActionOne.IsEnabled = BoundValue.Status != SomeEnum.Two
ActionTwo.IsEnabled = BoundValue.Status == SomeEnum.One || BoundValue.Status == SomeEnum.Two

Gibt es trotzdem, dies zu tun in XAML? Die alternative wäre, nur um zu schreiben ein Wert Konverter für jede Taste, aber da der Inhalt und andere Einzelheiten der Schaltfläche kann variieren, auch ich möchte nicht schreiben wie 6 Wert-Wandler.

Prost!

InformationsquelleAutor sohum | 2010-01-07
Schreibe einen Kommentar