2013-11-26 3 views
0

Я разрабатываю элемент управления (элемент управления) для отображения ящиков в комнате (например, мешок). Если размер комнаты составляет 10 * 10 футов, тогда я должен масштабировать ее, чтобы она соответствовала моему экрану. Также все объекты в комнате также должны быть масштабированы.Масштабирование элементов в элементах управления

На мой взгляд, модель У меня есть коллекция этих объектов (например, ящиков) с фактическим размером.

ItemPanel элемента управления элементами, как холст, где я могу свободно перемещать объекты.

В настоящее время в моем измерении переопределить или упорядочить переопределение элементовПанель. Я получаю высоту и ширину панели. С этой высотой и шириной я применяю масштабирование к объекту при организации.

Так что мой вопрос в том, подходит ли подход или есть лучшая альтернатива.

С уважением Саурабх Dighade

+0

Я считаю, что вы на правильном пути. – Somedust

+0

@Somedust Спасибо за ответ – SD13

+0

Возможно, вы можете попробовать использовать ScrollViewer и установить его размер. И ScrollViewer будет масштабировать все элементы, находящиеся внутри – Sasha

ответ

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; изменять размеры только путем изменения одного свойства. Обратите внимание, что Im привязывает значения ScaleX и ScaleY

+0

Спасибо, я попробую это, и если это сработает, я буду отмечать его как ответ. – SD13

+0

Привет, У меня есть масштаб, и я не могу использовать scaleTransform. Моя главная проблема заключается в том, где я должен применять шкалу. то есть масштабирование не является проблемой, когда его применять. Но спасибо за просмотр и ответ – SD13

+0

Вы используете его как ? – Sasha

Смежные вопросы