WPF / XAML - масштабирование размера текста до размера окна - PullRequest
1 голос
/ 16 июля 2009

Я новичок в WPF. У меня есть окно WPF с кучей ярлыков и ListBox.

При изменении размера окна я хочу масштабировать размер НЕКОТОРЫХ ярлыков, но не все. Я не хочу, чтобы ListBox масштабировался - просто несколько ярлыков.

Я понимаю, что могу изменить размер окна просмотра при изменении размера окна, но, как бы я с ним не связывался, я не получаю желаемого эффекта. Конечно, я не могу окружить все это Viewbox, потому что это изменило бы размер всего, поэтому я решил, что мне нужно будет поместить несколько разных Viewbox в окно, окружающее каждый ярлык, который я хочу расширить. Но, конечно ... ничего не расширяется, когда я делаю это.

Аналогичным образом, когда я расширяю метки, рядом с этими метками должны оставаться другие метки, поскольку они являются идентификаторами.

Итак ... вот XAML, который у меня есть на данный момент. Я даже не знаю, нахожусь ли я на правильном пути. Буду признателен за любую помощь в создании ярлыков с номерами в них с окном.

</p> <pre><code><Window x:Class="WpfApplication7.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication7" Title="Window1"> <StackPanel Orientation="Horizontal"> <ListBox Margin="2"> <ListBoxItem>a</ListBoxItem> <ListBoxItem>b</ListBoxItem> <ListBoxItem>c</ListBoxItem> </ListBox> <StackPanel Orientation="Vertical"> <Label>Title</Label> <StackPanel Orientation="Horizontal"> <Grid> <Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions> <Label Grid.Row="0">A</Label> <Label Grid.Row="1">B</Label> <Label Grid.Row="2">C</Label> <Label Grid.Row="3">D</Label> </Grid> <Grid> <Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions> <Viewbox Grid.Row="0" Stretch="Fill"> <Label>1</Label> </Viewbox> <Viewbox Grid.Row="1" Stretch="Fill"> <Label>2</Label> </Viewbox> <Viewbox Grid.Row="2" Stretch="Fill"> <Label>3</Label> </Viewbox> <Viewbox Grid.Row="3" Stretch="Fill"> <Label>4</Label> </Viewbox> </Grid> <Grid> <Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions> <Viewbox Grid.Row="0" Stretch="Fill"> <Label>5</Label> </Viewbox> <Viewbox Grid.Row="1" Stretch="Fill"> <Label>6</Label> </Viewbox> <Viewbox Grid.Row="2" Stretch="Fill"> <Label>7</Label> </Viewbox> <Viewbox Grid.Row="3" Stretch="Fill"> <Label>8</Label> </Viewbox> </Grid> <Grid> <Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions> <Label Grid.Row="0">E</Label> <Label Grid.Row="1">F</Label> <Label Grid.Row="2">G</Label> <Label Grid.Row="3">H</Label> </Grid> </StackPanel> </StackPanel> </StackPanel> </Window>

1 Ответ

2 голосов
/ 16 июля 2009

Вы на правильном пути. Тем не менее, вам нужно использовать некоторые определения столбцов, и ваши определения строк немного неудобны. Вы используете несколько различных панелей макетов, встроенных друг в друга, что влияет на изменение размеров встроенного Viewbox. Вы можете выполнить точно такой же макет с помощью одной простой сетки 5x5 (без стековых панелей).

Я продемонстрировал это в следующем XAML:

<Window x:Class="TestWpfApplication.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestWpfApplication"
Title="Window1">
<Window.Resources>
    <Style TargetType="{x:Type Label}" x:Key="{x:Type Label}">
        <Setter Property="HorizontalAlignment" Value="Center"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>
</Window.Resources>

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <ListBox Grid.RowSpan="5" Grid.Column="0">
        <ListBoxItem>a</ListBoxItem>
        <ListBoxItem>b</ListBoxItem>
        <ListBoxItem>c</ListBoxItem>
    </ListBox>

    <Label Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="4">Title</Label>

    <Label Grid.Row="1" Grid.Column="1">A</Label>
    <Label Grid.Row="2" Grid.Column="1">B</Label>
    <Label Grid.Row="3" Grid.Column="1">C</Label>
    <Label Grid.Row="4" Grid.Column="1">D</Label>

    <Viewbox Grid.Row="1" Grid.Column="2">
        <Label>1</Label>
    </Viewbox>
    <Viewbox Grid.Row="2" Grid.Column="2">
        <Label>2</Label>
    </Viewbox>
    <Viewbox Grid.Row="3" Grid.Column="2">
        <Label>3</Label>
    </Viewbox>
    <Viewbox Grid.Row="4" Grid.Column="2">
        <Label>4</Label>
    </Viewbox>

    <Viewbox Grid.Row="1" Grid.Column="3">
        <Label>5</Label>
    </Viewbox>
    <Viewbox Grid.Row="2" Grid.Column="3">
        <Label>6</Label>
    </Viewbox>
    <Viewbox Grid.Row="3" Grid.Column="3">
        <Label>7</Label>
    </Viewbox>
    <Viewbox Grid.Row="4" Grid.Column="3">
        <Label>8</Label>
    </Viewbox>

    <Label Grid.Row="1" Grid.Column="4">E</Label>
    <Label Grid.Row="2" Grid.Column="4">F</Label>
    <Label Grid.Row="3" Grid.Column="4">G</Label>
    <Label Grid.Row="4" Grid.Column="4">H</Label>
</Grid>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...