Tengo una aplicación WPF donde la interfaz de usuario debe escalarse para que se agranda si las ventanas se hacen más grandes. En uno de los cuadros de diálogo, debo presentar una lista de elementos a un usuario y el usuario debe hacer clic en uno de ellos. La lista contendrá de 1 a alrededor de 15-20 elementos. Quiero que el tamaño de fuente para cada elemento individual sea tan grande como el tamaño de fuente para los otros elementos en la lista, pero al mismo tiempo quiero que el tamaño de fuente aumente si la ventana se hace más grande.escalado de fuente WPF
Por el momento, mi código de prueba se ve a continuación.
<Window x:Class="WpfApplication4.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:WpfApplication4"
Title="Window1" Height="480" Width="640">
<ScrollViewer>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30*" MinHeight="30"/>
<RowDefinition Height="30*" MinHeight="30"/>
<RowDefinition Height="30*" MinHeight="30"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" MaxHeight="100"><Viewbox><TextBlock>T</TextBlock></Viewbox></Button>
<Button Grid.Row="1" MaxHeight="100"><Viewbox><TextBlock>Test</TextBlock></Viewbox></Button>
<Button Grid.Row="2" MaxHeight="100"><Viewbox><TextBlock>Test Longer String</TextBlock></Viewbox></Button>
</Grid>
</ScrollViewer>
</Window>
Si la aplicación se inicia y la ventana se amplía, todo se ve bien. Si se reduce el ancho de la ventana, el tamaño de fuente del texto Test Longer String
se hace más pequeño, pero el tamaño de fuente para T
y Test
permanece igual. Entiendo por qué sucede esto: viewbox escalará los contenidos a su tamaño máximo. Lo que quiero saber es qué método debo usar para resolver este problema.
No quiero dar a los controles tamaños de fuente específicos porque algunas personas ejecutarán esto en pantallas de baja resolución como 640x480 y otras usarán pantallas anchas más grandes.
EDIT:
He intentado modificar mi código a la siguiente:
<ScrollViewer>
<Viewbox>
<ItemsControl>
<Button>Test 2</Button>
<Button>Test 3</Button>
<Button>Test 4 afdsfdsa fds afdsaf</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
</ItemsControl>
</Viewbox>
</ScrollViewer>
Pero con el tamaño de los bordes del botón se incrementan también, así que en las pantallas grandes, la los bordes de los botones se vuelven un centímetro de ancho.
He actualizado mi publicación. Ver debajo de "Editar". En resumen, si uso un TextBlock en lugar de un Button, pierdo la interfaz de usuario "Button" (efecto click, etc.). Si utilizo un Botón y lo coloco dentro de una Viewbox, se redimensionará todo el botón, incluido su borde. No quiero un borde de botón de 1 cm solo porque el programa esté maximizado. – Martin