Silverlight вертикальный индикатор - PullRequest
0 голосов
/ 16 марта 2011

Не могу понять, что я сделал не так. У меня есть 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>

В конце он должен выглядеть как клавишная клавиатура пианино ... После вращения вращения прогрессбар нарезается ... Что я сделал? Как это исправить?

Ответы [ 2 ]

0 голосов
/ 17 марта 2011

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

Вы должны следовать советам jumbo и создавать вертикальный индикатор выполнения, изменяяшаблон, а не по ротации.

Если вы не хотите создавать шаблон, вам нужно удалить основную сетку, имеющуюся в UserControl, и вместо этого использовать Canvas.Холсты не обрезаются.Они позволяют вашим элементам плавать свободно, что, вероятно, то, что вы хотите.

0 голосов
/ 16 марта 2011

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

Также SilverlightSpy теперь бесплатен для только для чтения , и вы можете просматривать настоящее визуальное деревово время выполнения.

В любом случае, я бы предложил изменить ориентацию ProgressBar, настроив его шаблон.

...