Radiobutton deaktivieren, aber nicht ausgrauen



  • Hallo,

    ich möchte gern einen Radiobutton deaktivieren. Das geht normalerweise mit Enabled = false. Der Radiobutton soll dabei aber nicht grau werden.

    Weiss jemand wie das geht?

    Danke



  • Warum soll die Optionsschaltfläche nicht grau werden. Das graue Signailisert doch dem Benutzer, dass diese Option nicht ausgewählt werden kann.



  • Die Frage ist wieso du das machen willst ?

    Mit ein wenig bescheissen schaffst du es so:

    private void radioButton1_Click(object sender, EventArgs e)
    {
        radioButton1.Checked = false;
    }
    

    Gruss Sheldor



  • Danke für die schnellen Antworten.
    Mit deaktivierten Radiobuttons möchte ich bestimmte Zustände anzeigen. Aber nur anzeigen. Die Radiobuttons sollen deaktiviert sein.



  • Leg einfach ein Grid drüber mit Background Transparent, das lässt dann keine Klicks durch und du kannst anzeigen was du möchtest 😃

    <Grid>
        <RadioButton />
        <RadioButton />
        <AnythingElse />
    
        <Grid x:Name="DeactivationLayer" Background="Transparent" />
    </Grid>
    


  • @ David W,

    super, danke. Das ist wonach ich gesucht habe.

    Gruß
    sonic



  • sonic_1233 schrieb:

    @ David W,

    super, danke. Das ist wonach ich gesucht habe.

    Gruß
    sonic

    Problem: diese Steuerelemente sind noch per Tab-taste erreichbar und ein Grid ist da glaube ich zu overloaded im gegensatz zu Rectangle o.ä. (?). Außerdem könnte man da gleich imMain-Grid einfach IsHitTestVisible = false setzen.



  • sonic_1233 schrieb:

    Mit deaktivierten Radiobuttons möchte ich bestimmte Zustände anzeigen. Aber nur anzeigen.

    Schlechtes UI-Design.

    Radiobuttons sind aktive Steuerelement und signalisieren Interaktionsmöglichkeit. Willst du deine Benutzer verwirren oder veräppeln?



  • Jop. Einen anderen Sinn als die Benutzerverwirrung hat das wirklich nicht...



  • Na ja, es ist die einfachste Möglichkeit einen booleschen Wert auf der Oberfläche einzublenden. Und ich habe keine Zeit irgendwelche Lämpchen selbst zu malen.



  • Icons gibts gratis im Internet und eine Imagekomponente ist doch schnell mal erzeugt. Gibt sicherlich noch reichlich andere Lösungsmöglichkeiten 😉



  • Noch eine Möglichkeit wäre es ein Print Screen vom Radio Button zu machen und dann einfach das Bild einfügen.

    GRuss Sheldor



  • Beide Aufwände liegen im Bereich von 5-10min 😃



  • Rhombicosidodecahedron schrieb:

    Problem: diese Steuerelemente sind noch per Tab-taste erreichbar

    Stimmt, aber das muss man wissen 😃

    Rhombicosidodecahedron schrieb:

    und ein Grid ist da glaube ich zu overloaded im gegensatz zu Rectangle o.ä. (?).

    Andere Controls gehen bestimmt auch
    1. Das Control muss nur die Klicks fangen und auf Handled setzen (Das Rectangle macht das glaub ich nicht)
    2. Wenn das Grid keine Rows und Columns zu Zeichnen hat, ist es nicht oversized, ist also zu vernachlässigen

    Rhombicosidodecahedron schrieb:

    Außerdem könnte man da gleich imMain-Grid einfach IsHitTestVisible = false setzen.

    Ne das geht nicht, dieses Property wird nicht an die Childs weiter vererbt, und selbst wenn kann es schnell passieren das ein Control Style es wieder aktiviert und so das vom Parent überschreibt.

    It0101 schrieb:

    Beide Aufwände liegen im Bereich von 5-10min

    Das verfassen der Frage und lesen der Antwort hat bestimmt länger gedauert ^^

    //Mal eben schnell was zusammen hacken 😃

    <ContentControl Content="{Binding IsChecked, ElementName=box1}">
        <ContentControl.ContentTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Ellipse x:Name="lamp" Fill="Red" Width="14" Height="14" />
                    <TextBlock Text="{Binding }" />
                </StackPanel>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding }" Value="True">
                        <Setter TargetName="lamp" Property="Fill" Value="LightGreen" />
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </ContentControl.ContentTemplate>
    </ContentControl>
    

    Hat ~3 Min gedauert.


Log in to reply