Tengo una cuadrícula con 2 filas y 2 columnas. En 0,0 tengo un TextBlock con algo de texto que puede cambiar debido a la localización, en 1,0 tengo una imagen.
Aquí está el ejemplo de XAML:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="Tb" Grid.Row="0" Grid.Column="0">Foobar</TextBlock>
<Image Source="Foobar.jpg" Grid.Row="1" Grid.Column="0" />
</Grid>
</Window>
Se desconoce el tamaño de la imagen utilizada como fuente para el elemento Imagen.
Necesito que la columna de la cuadrícula # 0 sea tan ancha como el texto TextBlock. La imagen debe ser tan ancha como la columna y su altura debe establecerse correctamente para mantener la relación de aspecto.
Intenté envolver la imagen en un NoSizeDecorator, pero de esa manera la imagen no aparece en absoluto, a menos que especifique la altura y el ancho absolutos de la imagen en el XAML, lo que no puedo hacer porque necesito que la imagen tenga el mismo ancho del texto.
¿Cómo puedo hacerlo?
Su código ya debería hacer lo que quiere, con la adición de la Image.Width
propiedad:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock x:Name="Tb" Grid.Row="0" Grid.Column="0">Foobar</TextBlock>
<Image Source="Foobar.jpg" Grid.Row="1" Grid.Column="0"
Width="{Binding ActualWidth, ElementName=Tb}" />
</Grid>
Aquí básicamente establecemos la Image.Width
propiedad de TextBlock.ActualWidth
para asegurarnos de que Image
no crezca demasiado. No es necesario utilizar un ViewBox
control costoso para hacer esto.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras