缩放itemsControl中的项目

时间:2013-11-26 11:37:31

标签: c# wpf wpf-controls

我正在开发一个控件(项目控件)来显示房间中的方框(例如麻袋)。 如果房间大小是10 * 10英尺,那么我必须缩放它以适应我的屏幕。 此外,房间中的所有物体也需要缩放。

在我的视图模型中,我有一组具有实际尺寸的这些对象(即框)。

我的项目控件的ItemPanel就像一个画布,我可以自由移动对象。

目前在我的Measure Override或Arrange覆盖itemsPanel我得到面板的高度和宽度。使用该高度和宽度,我在安排时将缩放应用于对象。

所以我的问题是,方法更好还是有更好的选择。

此致 Saurabh Dighade

1 个答案:

答案 0 :(得分:0)

看看这段代码

<Grid x:Uid="Grid_1" Margin="10" ToolTip="{Binding ToolTip}">
    <StackPanel x:Uid="StackPanel_1" Grid.Row="1"  Orientation="Horizontal"> 
        <Slider x:Uid="ScaleSlider" x:Name="ScaleSlider" Minimum="0.2" Maximum="5" LargeChange="0.05" SmallChange="0.01" 
                Value="{Binding ScaleSlider}" IsSnapToTickEnabled="True" TickFrequency="0.1" Visibility="Hidden"/>
    </StackPanel>

    <ScrollViewer x:Uid="ScrollViewer_1" Grid.Row="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Border x:Uid="AlStatusBorder" BorderBrush="#101010" BorderThickness="3"
         Background="{Binding Color}"
         x:Name="AlStatusBorder"
         Padding="5"
         CornerRadius="10" HorizontalAlignment="Center" VerticalAlignment="Top">
            <Grid x:Uid="Grid_2">  
            <!-- Tachometer Gauge -->
                <gauge:CircularGauge x:Uid="gauge:CircularGauge_1" Grid.Row="1" Grid.Column="2" FrameType="CircularTopGradient" Width="150" Height="150" Radius="75" Background="#444444"
                        RimBrush="#444444">
                    <gauge:CircularGauge.LayoutTransform >
                        <ScaleTransform x:Uid="ScaleTransform_1" ScaleX="{Binding ElementName=ScaleSlider, Path=Value}"
                                ScaleY="{Binding ElementName=ScaleSlider, Path=Value}"/>
                    </gauge:CircularGauge.LayoutTransform>  
                </gauge:CircularGauge>             
            </Grid>
        </Border>
    </ScrollViewer>
</Grid>

在grid_2中,我实现了我的userControl。当我更改属性ScaleSlider时,元素变得更大或更小,而我内部的usercontrol也会改变它的大小。可能是你在找什么。至少我可以移动这个userControl;仅通过更改一个属性来更改大小。请注意,Im绑定ScaleX和ScaleY值