2014-01-30 6 views
0

Я хочу установить расположение списка. В Winform я сделал это, используя этот код listbox.Location, но в WPF нет listbox.Location.Как установить расположение списка в WPF

Edit 1:

var rect = txtBox.GetRectFromCharacterIndex(txtBox.CaretIndex); 

var point = rect.BottomRight; 

lstBox1.Visibility = Visibility.Visible; 

//Want to achieved this 
//TextBox.Location = point; 

Я создаю что-то вроде Intellisense с ListBox

+0

Покажите нам свой XAML. –

+0

Пожалуйста, добавьте свой код и вместо местоположения попробуйте использовать свойство Margin –

+1

, вы не можете использовать те же принципы winforms. –

ответ

0

Вы, вероятно, следует читать на макетах WPF, однако вы можете использовать ListBox.Margin позиционировать ListBox в жестко закодированное местоположение.

listbox.Margin = new Thickness(25, 200, 0, 0); 

или в XAML

<ListBox Margin="25,200,0,0"/> 
+0

Я хочу установить значения точек по оси y в списке. В WinForm мне понравился этот 'listbox.Location = p' где p is' p.Y + = (int) rtbInput.Font.GetHeight() * 2; ' –

+1

WPF не работает таким образом. Предпочитает, чтобы вы создали структурированный макет. Когда вы создаете такой макет, изменение размера окна и другие подобные функции обрабатываются в значительной степени для вас. [Рассмотрим этот простой учебник] (http://wpftutorial.net/LayoutProperties.html). – deloreyk

0

расположение A ListBox определяется по отношению к контролю она содержится. Для того, чтобы установить местоположение в пределах его родительского контроля вы можете использовать HorizontalAlignment, VerticalAlignment и свойства полей.

Вот пример:

<Window x:Class="WpfApplication14.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ListBox HorizontalAlignment="Left" Height="100" Margin="197,105,0,0" VerticalAlignment="Top" Width="100"/> 
    </Grid> 
</Window> 

Примечание - все эти свойства доступны программно, а также.

Спасибо,

Эрик

+0

Я использовал это 'var rect = txtBox.GetRectFromCharacterIndex (txtBox.CaretIndex); var point = rect.BottomRight; lstBox1.Margin = new Толщина (0, точка.Y, 0, 0); ' В текстовом поле GotFocus Event, но проблема в том, что текстовое поле сфокусировано, только что состыкован с основными окнами –

0

Все зависит от того, что родительская панель, чтобы определить, как установить положение вашего ListBox. Вам нужно будет узнать больше о Layouts в WPF. Давайте посмотрим на 2 панели, чтобы вы начали, Grid and Canvas.

<Grid> 
    <ListBox x:Name="lb" HorizontalAlignment="Left" VerticalAlignment="Top"/> 
</Grid> 

lb.Margin = new Thickness(10,10,0,0); 

В приведенном выше примере блок ListBox lb представлен в таблице (10,10).

<Canvas> 
    <ListBox x:Name="lb"/> 
</Canvas> 

Canvas.SetTop(lb, 10); 
Canvas.SetLeft(lb, 10); 

Приведенный выше пример делает то же самое для lb на холсте.

Как вы можете видеть, это зависит от того, какой тип панели вы помещаете в свой список, чтобы иметь возможность правильно установить позицию.

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