开发者

silverlight vertical progressbar

开发者 https://www.devze.com 2023-02-16 23:15 出处:网络
I can not figure out what I did wrong. I have a Usercontrol that has a vertical progressbar and under it a label.

I can not figure out what I did wrong. I have a Usercontrol that has a vertical progressbar and under it a label.

<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>
                <RotateTr开发者_StackOverflowansform Angle="-90"/>
        </Grid.RenderTransform> 
        </Grid>
</UserControl>

This usercontrol is then used in a 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>

It should look like a piano keybord at the end... After the rotation transformation the progressbar is chopped... What did I dowrong? How to fix this?


You can try to add different background colors to all controls to find out sizes of controls.

Also SilverlightSpy is now free for read only and you can go through the real visual tree at runtime.

Anyway, I would suggest to change the orientation of ProgressBar by customizing its template.


This is a clipping issue. You are setting too many heights and widths everywhere and it's confusing to know which one is in control of dimensions. Also, the stacking in the ListBox works on the layout and the RotateTransform is only effective on the final visual pass, so it's rotating a clipped progress bar.

You should follow jumbo's advice and create a vertical progress bar by modifying the template, not by rotation.

If you don't want to create the template, then you need to remove the main Grid you have in the UserControl and use a Canvas instead. Canvases don't clip. They let your elements float freely, which is probably what you want.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号