2010-07-02 2 views
0

Я пытаюсь динамически перемещать элемент управления вкладкой на wpf. Элемент управления вкладкой подключен к таймеру, и в основном, если вы нажмете кнопку, размер уменьшится, чтобы он выглядел и вел себя как расширяемая панель. Однако, когда я «сжимаю» элемент управления вкладкой, ширина настраивается централизованно, тогда как я хочу, чтобы элемент управления оставался там, где он был расположен по оси X. Как мне это сделать (почему они не могли сделать control.location (x, y) Я не знаю!)?Как перемещать динамическое управление вкладкой в ​​форме wpf

GeneralTransform myTrans = this.tabcontrol1.TransformToAncestor(this); 
Point p1 = myTrans.Transform(new Point(0, 0)); 

Я использую две строки выше, чтобы получить позицию, это может быть сделано либо с помощью GeneralTransform или VisualTreeHelper (который возвращает вектор) и как я могу применить это к TabControl, чтобы заставить его двигаться?

Спасибо, Р.

+0

Хорошо, все еще не знаю, как перемещать его динамически, но у меня есть проблема, установив свойство horizontalalignment вправо. Думал, что может быть что-то подобное. – flavour404

ответ

0

Вы пробовали использовать холст в качестве контейнера для удержания TabControl? Canvas поддерживает только абсолютное позиционирование, поэтому вы можете установить его с помощью Canvas.Top и Canvas.Left. Если вам нужно растянуть элемент управления, чтобы заполнить область, вы можете привязать к ActualWidth/ActualHeight контейнера Canvas.

Вот пример того, как может выглядеть XAML.

 <Canvas x:Name="tabCanvas" Grid.Row="1"> 
     <TabControl x:Name="tabControl" Canvas.Left="0" Canvas.Top="0" 
        Width="{Binding ElementName=tabCanvas, Path=ActualWidth}" 
        Height="{Binding ElementName=tabCanvas, Path=ActualHeight}"> 
      <TabItem Header="Item 1" /> 
      <TabItem Header="Item 2" /> 
     </TabControl> 
    </Canvas> 
Смежные вопросы