MaterialDesignInXAML / MaterialDesignInXAML/MaterialDesignInXamlToolkit

oversize canvas cause radiabutton path render as oval

Offen
#904 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug up-for-grabs
Vorherrschende Sprache
C#
Sterne
16.3k
Forks
3.5k
Ø Merge
1 T. 22 Std.
Gemergte PRs (30 T.)
8

Beschreibung

In MaterialDesignTheme.RaidoButton.xaml file, the canvas is large than viewbox, it will cause multi radio button look like oval, not circle.

three radio in uniform grid with 3 columns
three radio in uniform grid with 3 columns

                        <Viewbox Width="18" Height="18"  VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                            <Canvas Width="24" Height="24">
                                <Path x:Name="Graphic"
                                      Data="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" 
                                      Fill="{DynamicResource MaterialDesignCheckBoxOff}" />
                                <Ellipse x:Name="InteractionEllipse" Fill="{TemplateBinding Foreground}" Width="0" Height="0" Canvas.Top="12" Canvas.Left="12" Opacity="0" RenderTransformOrigin="0.5,0.5" >
                                    <Ellipse.RenderTransform>
                                        <TransformGroup>
                                            <ScaleTransform/>
                                            <SkewTransform/>
                                            <RotateTransform/>
                                            <TranslateTransform/>
                                        </TransformGroup>
                                    </Ellipse.RenderTransform>
                                </Ellipse>
                            </Canvas>
                        </Viewbox>

I wonder if there a easy way to fix it, such as just changing some property like uselayoutround.
However, it's not working.
Another way is change all canvas size to fix size 18*18, but it will not work properly in large radio button.
So, I think that replacing canvas to grid with 2 ellipse maybe a solution(just do as MahApps.Metro).

ref:

                        <Grid x:Name="PART_CHECKBOX">
                            <Rectangle Margin="-6 0" Fill="{DynamicResource TransparentWhiteBrush}" />
                            <Ellipse x:Name="normal"
                                     Width="18"
                                     Height="18"
                                     Fill="{TemplateBinding Background}"
                                     Stroke="{TemplateBinding BorderBrush}"
                                     StrokeThickness="{TemplateBinding BorderThickness}" />
                            <Ellipse x:Name="Checked1"
                                     Width="10"
                                     Height="10"
                                     Fill="{DynamicResource HighlightBrush}"
                                     Opacity="0" />
                            <Ellipse x:Name="disabled"
                                     Width="18"
                                     Height="18"
                                     Fill="{DynamicResource SemiTransparentWhiteBrush}"
                                     Opacity="0"
                                     StrokeThickness="{TemplateBinding BorderThickness}" />
                        </Grid>

Regards.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne in MaterialDesignTheme.RaidoButton.xaml und untersuche die Viewbox- und Canvas-Größenanpassung rund um die Graphic- und InteractionEllipse-Pfade. Reproduziere das Beispiel eines UniformGrid mit drei RadioButtons und vergleiche anschließend die Darstellung bei unterschiedlichen RadioButton-Größen. Als abgeschlossen gilt die Aufgabe, wenn die Radio-Pfade im gemeldeten Layout und bei größeren Steuerelementen kreisförmig statt oval bleiben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Bereich
design, desktop
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.