Wir erstellen eine XBAP-Anwendung, für die an verschiedenen Stellen auf einer Seite abgerundete Ecken erforderlich sind, und wir möchten einen WPF-Container für abgerundete Ecken, in dem eine Reihe anderer Elemente platziert werden können. Hat jemand Vorschläge oder Beispielcode, wie wir dies am besten erreichen können? Entweder mit Stilen auf einem oder mit dem Erstellen eines benutzerdefinierten Steuerelements?
wpf
rounded-corners
FarrEver
quelle
quelle
Antworten:
Sie benötigen kein benutzerdefiniertes Steuerelement. Fügen Sie Ihren Container einfach in ein Rahmenelement ein:
Sie können die
<Grid/>
durch jeden der Layout-Container ersetzen ...quelle
<Border BorderBrush="Black" BorderThickness="1" CornerRadius="8">
ist ein geeigneter Ersatz dafür, ein bisschen prägnanterIch weiß, dass dies keine Antwort auf die ursprüngliche Frage ist ... aber Sie möchten häufig den inneren Inhalt des soeben erstellten Randes mit abgerundeten Ecken abschneiden.
Chris Cavanagh hat eine hervorragende Möglichkeit gefunden , genau dies zu tun.
Ich habe ein paar verschiedene Ansätze ausprobiert ... und ich denke, dieser rockt.
Hier ist das xaml unten:
quelle
Ich musste das nur selbst machen, also dachte ich, ich würde hier eine andere Antwort posten.
Hier ist eine andere Möglichkeit, einen abgerundeten Eckrand zu erstellen und seinen inneren Inhalt zu beschneiden . Dies ist der einfache Weg, indem Sie die Clip-Eigenschaft verwenden. Es ist schön, wenn Sie einen VisualBrush vermeiden möchten.
Das xaml:
Der Code für den Konverter:
quelle
VB.Net-Code-basierte Implementierung der Grenzkontrolllösung von kobusb. Ich habe es verwendet, um eine ListBox mit Button-Steuerelementen zu füllen. Die Button-Steuerelemente werden aus MEF-Erweiterungen erstellt. Jede Erweiterung verwendet das ExportMetaData-Attribut von MEF für eine Beschreibung der Erweiterung. Die Erweiterungen sind VisiFire-Diagrammobjekte. Der Benutzer drückt eine aus der Liste der Schaltflächen ausgewählte Schaltfläche, um das gewünschte Diagramm auszuführen.
quelle
Wenn Sie versuchen, eine Schaltfläche in einen abgerundeten Rechteckrahmen einzufügen, sollten Sie sich das Beispiel von msdn ansehen . Ich fand dies, indem ich nach Bildern des Problems googelte (anstelle von Text). Ihr sperriges äußeres Rechteck ist (zum Glück) leicht zu entfernen.
Beachten Sie, dass Sie das Verhalten der Schaltfläche neu definieren müssen (da Sie die ControlTemplate geändert haben). Das heißt, Sie müssen das Verhalten der Schaltfläche definieren, wenn Sie mit einem Trigger-Tag (Property = "IsPressed" Value = "true") im ControlTemplate.Triggers-Tag darauf klicken. Hoffe das spart jemand anderem die Zeit, die ich verloren habe :)
quelle