0

何が間違っていたのかわかりません。垂直プログレスバーとその下にラベルがある Usercontrol があります。

<UserControl x:Class="IFramedInBrowser.Code"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" Height="150" Width="15">

    <Grid Width="120" Height="15" >
        <StackPanel Width="120" Height="15" >
            <ProgressBar Grid.Row="0" Value="{Binding Path=Percent}"  Maximum="100" Width="120" Height="15" />
        </StackPanel>
        <TextBlock Grid.Row="1" Height="30" HorizontalAlignment="Left"  Name="textBlock1" Text="{Binding Path=Symbol.Name}" VerticalAlignment="Top" >
            <TextBlock.RenderTransform>
                <RotateTransform Angle="90"/>
            </TextBlock.RenderTransform>
        </TextBlock>
        <Grid.RenderTransform>
                <RotateTransform Angle="-90"/>
        </Grid.RenderTransform> 
        </Grid>
</UserControl>

このユーザー コントロールは、ItemsControl で使用されます。

<ItemsControl x:Name="HorizontalListBox"  
                      ItemsSource="{Binding Source={StaticResource MyViewModel}, Path=List}" 
                      HorizontalAlignment="Stretch" 
                      HorizontalContentAlignment="Center" Height="150" 
                      >
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <my:Code DataContext="{Binding}">

                    </my:Code>
                </DataTemplate>
            </ItemsControl.ItemTemplate>

        </ItemsControl>

最後にピアノの鍵盤のように見えるはずです... 回転変換の後、プログレスバーが切り刻まれています... 私は何を間違えましたか? これを修正する方法は?

4

2 に答える 2

0

これはクリッピングの問題です。どこでも高さと幅を設定しすぎているため、どちらが寸法を制御しているかを知るのは混乱します。また、ListBoxのスタッキングはレイアウトで機能し、RotateTransformは最後のビジュアルパスでのみ有効であるため、クリップされたプログレスバーを回転させます。

ジャンボのアドバイスに従い、回転ではなくテンプレートを変更して、垂直方向のプログレスバーを作成する必要があります。

テンプレートを作成したくない場合は、UserControlにあるメイングリッドを削除し、代わりにCanvasを使用する必要があります。キャンバスはクリップしません。彼らはあなたの要素を自由に浮かせます、それはおそらくあなたが望むものです。

于 2011-03-17T14:30:37.553 に答える
0

すべてのコントロールに異なる背景色を追加して、コントロールのサイズを確認できます。

また、SilverlightSpy は読み取り専用で無料になり、実行時に実際のビジュアル ツリーを参照できます。

とにかく、テンプレートをカスタマイズして ProgressBar の向きを変更することをお勧めします。

于 2011-03-16T11:10:49.903 に答える