我正在开发一个控件(项目控件)来显示房间中的方框(例如麻袋)。 如果房间大小是10 * 10英尺,那么我必须缩放它以适应我的屏幕。 此外,房间中的所有物体也需要缩放。
在我的视图模型中,我有一组具有实际尺寸的这些对象(即框)。
我的项目控件的ItemPanel就像一个画布,我可以自由移动对象。
目前在我的Measure Override或Arrange覆盖itemsPanel我得到面板的高度和宽度。使用该高度和宽度,我在安排时将缩放应用于对象。
所以我的问题是,方法更好还是有更好的选择。
此致 Saurabh Dighade
答案 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值