我想设置列表框位置。在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的东西
答案 0 :(得分:0)
您应该阅读WPF布局,但是您可以使用ListBox.Margin
将ListBox
置于硬编码位置。
listbox.Margin = new Thickness( 25, 200, 0, 0 );
或在XAML中
<ListBox Margin="25,200,0,0"/>
答案 1 :(得分:0)
ListBox的位置是相对于其包含的控件确定的。要在其中设置父控件中的位置,可以使用HorizontalAlignment,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也是如此。
正如您所看到的,这取决于您将列表框放入哪种类型的面板以便能够正确设置位置。