Estamos creando una aplicación XBAP en la que necesitamos tener esquinas redondeadas en varias ubicaciones en una sola página y nos gustaría tener un contenedor WPF Rounded Corner para colocar un montón de otros elementos dentro. ¿Alguien tiene algunas sugerencias o código de muestra sobre cómo podemos lograr esto mejor? ¿O con estilos en un o con la creación de un control personalizado?
wpf
rounded-corners
FarrEver
fuente
fuente
Respuestas:
No necesita un control personalizado, simplemente coloque su contenedor en un elemento de borde:
Puede reemplazar el
<Grid/>
con cualquiera de los contenedores de diseño ...fuente
<Border BorderBrush="Black" BorderThickness="1" CornerRadius="8">
es un reemplazo adecuado para esto, un poco más sucintoSé que esta no es una respuesta a la pregunta inicial ... pero a menudo desea recortar el contenido interno del borde de la esquina redondeada que acaba de crear.
Chris Cavanagh ha ideado una manera excelente de hacer precisamente esto.
He intentado un par de enfoques diferentes para esto ... y creo que este es genial.
Aquí está el xaml a continuación:
fuente
Solo tenía que hacer esto yo mismo, así que pensé en publicar otra respuesta aquí.
Aquí hay otra forma de crear un borde de esquina redondeado y recortar su contenido interno . Esta es la forma más sencilla de utilizar la propiedad Clip. Es bueno si desea evitar un VisualBrush.
El xaml:
El código del convertidor:
fuente
Implementación basada en código VB.Net de la solución de control de fronteras de kobusb. Lo usé para llenar un ListBox de controles de botón. Los controles de botón se crean a partir de extensiones MEF. Cada extensión usa el atributo ExportMetaData de MEF para una Descripción de la extensión. Las extensiones son objetos de gráficos VisiFire. El usuario presiona un botón, seleccionado de la lista de botones, para ejecutar el gráfico deseado.
fuente
Si está intentando colocar un botón en un borde de rectángulo redondeado, debería consultar el ejemplo de msdn . Encontré esto buscando en Google imágenes del problema (en lugar de texto). Su voluminoso rectángulo exterior es (afortunadamente) fácil de quitar.
Tenga en cuenta que tendrá que redefinir el comportamiento del botón (ya que ha cambiado la ControlTemplate). Es decir, necesitará definir el comportamiento del botón cuando se hace clic en él usando una etiqueta Trigger (Property = "IsPressed" Value = "true") en la etiqueta ControlTemplate.Triggers. Espero que esto le salve a alguien más el tiempo que perdí :)
fuente