2014-01-30 73 views
0

我想設置列表框的位置。在Winform中,我通過使用此代碼listbox.Location來完成此操作,但在WPF中沒有listbox.Location屬性。如何在WPF中設置列表框的位置

編輯1:

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

var point = rect.BottomRight; 

lstBox1.Visibility = Visibility.Visible; 

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

我創建像智能感知與列表框

+0

向我們展示您的XAML。 –

+0

請添加您的代碼,而不是位置,嘗試使用保證金屬性 –

+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是'p.Y + =(int)rtbInput.Font.GetHeight()* 2;' –

+1

WPF不能以這種方式工作。它會更喜歡你創建一個結構化的佈局。當你像這樣創建一個佈局時,窗口大小調整和其他類似的功能都可以爲你處理。[考慮這個簡單的教程](http://wpftutorial.net/LayoutProperties.html)。 – deloreyk

0

一個列表框的位置是相對於它包含在控制確定。要設置位置內它是可以使用的Horizo​​ntalAlignment,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 =新厚度(0,點。Y,0,0);' 在文本框GotFocus事件,但問題是當文本框是關注列表框只是停靠到主窗口 –

0

這一切都依賴於父面板是什麼,以確定如何設置列表框的位置。您需要在WPF中閱讀更多關於Layouts的信息。讓我們看看2個面板讓你開始,網格和畫布。

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

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

上面的例子在位置(10,10)的網格中設置ListBox磅。

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

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

上面的例子對Canvas中的lb也是一樣的。

正如你所看到的,它取決於你把你的列表框到要能夠正確地設定位置面板是什麼類型的。