如何在WPF中设置列表框位置

时间:2014-01-30 17:44:15

标签: c# wpf wpf-controls

我想设置列表框位置。在Winform中,我使用此代码listbox.Location完成了此操作,但在WPF中没有listbox.Location属性。

修改1:

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

 var point = rect.BottomRight;

 lstBox1.Visibility = Visibility.Visible;

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

我正在使用listbox创建类似Intellisense的东西

3 个答案:

答案 0 :(得分:0)

您应该阅读WPF布局,但是您可以使用ListBox.MarginListBox置于硬编码位置。

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

或在XAML中

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

答案 1 :(得分:0)

ListBox的位置是相对于其包含的控件确定的。要在其中设置父控件中的位置,可以使用Horizo​​ntalAlignment,VerticalAlignment和Margin Properties。

以下是一个例子:

<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>

注意 - 所有这些属性也可以通过编程方式获得。

谢谢,

埃里克

答案 2 :(得分:0)

这完全取决于父面板的内容,以确定如何设置列表框的位置。您需要在WPF中阅读有关Layouts的更多信息。让我们看看2个面板让你入门,Grid和Canvas。

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

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

上面的示例将GridBox中的ListBox lb设置为位置(10,10)。

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

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

上面的例子对于Canvas中的lb也是如此。

正如您所看到的,这取决于您将列表框放入哪种类型的面板以便能够正确设置位置。