2

コマンドバインディングとロギングの実装をテストするために、テスト WPF プロジェクト (電卓) を作成しています。基本レイアウトはグリッドです。電卓の表示は、2 つの列にまたがる TextBox であり、使用可能なすべてのスペースを埋めるように拡張されます。これは問題なく動作しますが、ViewBox を使用してメイン フォームのサイズを変更するときに、ディスプレイ内のテキストのサイズを変更したいと考えています。いくつかの方法で ViewBox を導入しようとしましたが、表示内のテキストのサイズが変更されても、TextBox がすべてのスペースを埋めるために伸びなくなりました。

これを解決するにはどうすればよいですか?以下XAML。

<Grid>
        <Grid.Resources>
            <Style TargetType="Label">
                <Setter Property="Margin" Value="5"/>
            </Style>
            <Style TargetType="TextBox">
                <Setter Property="Margin" Value="5"/>
            </Style>
            <Style TargetType="Button">
                <Setter Property="Margin" Value="5"/>
            </Style>
        </Grid.Resources>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Button Grid.Column="0" Grid.Row="1">M+</Button>
        <Button Grid.Column="0" Grid.Row="2">MR</Button>
        <Button Grid.Column="1" Grid.Row="2"
                Click="Button_Click">1</Button>
        <Button Grid.Column="2" Grid.Row="2"
                Click="Button_Click">2</Button>
        <Button Grid.Column="3" Grid.Row="2"
                Click="Button_Click">3</Button>
        <Button Grid.Column="1" Grid.Row="3"
                Click="Button_Click">4</Button>
        <Button Grid.Column="2" Grid.Row="3"
                Click="Button_Click">5</Button>
        <Button Grid.Column="3" Grid.Row="3"
                Click="Button_Click">6</Button>
        <Button Grid.Column="1" Grid.Row="4"
                Click="Button_Click">7</Button>
        <Button Grid.Column="2" Grid.Row="4"
                Click="Button_Click">8</Button>
        <Button Grid.Column="3" Grid.Row="4"
                Click="Button_Click">9</Button>
        <Button Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="5"
                Click="Button_Click">0</Button>
        <Button Grid.Column="3" Grid.Row="5"
                Click="Button_Click">.</Button>
        <Button Grid.Column="4" Grid.Row="2">=</Button>
        <Button Grid.Column="4" Grid.Row="3">+</Button>
        <Button Grid.Column="4" Grid.Row="4">-</Button>
        <Button Grid.Column="5" Grid.Row="3">x</Button>
        <Button Grid.Column="5" Grid.Row="4">:</Button>
        <Button Grid.Column="4" Grid.Row="1">C</Button>
        <Button Grid.Column="5" Grid.Row="1">CE</Button>
        <Viewbox Grid.Column="1" Grid.Row="1">
            <Label >M</Label>
        </Viewbox>
        <!-- Display -->
        <TextBox Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="2"  
                 HorizontalContentAlignment="Right"
                 Text="{Binding CurrentValue}"/>
    </Grid>
4

1 に答える 1

1
<Viewbox Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="2" >
        <TextBox Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Viewbox}, Path=ActualWidth}"    
             HorizontalContentAlignment="Stretch" 
             Text="{Binding CurrentValue}"/>
</Viewbox>

それは私にとってはうまくいきます。それから私の仲間はうまくいきます!これをするだけ

<Viewbox Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="2" >
        <TextBox Width="100"     
         HorizontalContentAlignment="Stretch"  
         Text="{Binding CurrentValue}"/>
</Viewbox>

そして、うわー、それははるかにうまく機能します

于 2012-06-17T23:57:41.937 に答える