2010-08-18 63 views
1

我遇到了問題,如何在Silverlight中實現WinForms中的「錨定左右」屬性。動態大小控件,但不允許擬合內容

這裏是顯示我的問題的XAML:

 <Grid Width="400" > 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 

      <TextBlock Grid.Column="0" Text="Some label" /> 
      <TextBox Grid.Column="1" /> 
     <Grid> 

我想到的是要對左邊和標籤右邊的TextBox填補Grid。 在初始加載時,會發生這種情況。 但是,如果我在TextBox中鍵入很長的文本,則會調整其大小以適合其內容並變得比Grid大。

是否有可能阻止TextBox自行調整大小,並使其佔用的空間與在WinForms中左右設置錨點一樣多?

也許有一個容易的屬性來設置,我完全錯過了。

編輯:抱歉,我錯過了XAML(在Grid.Column=位)的一個關鍵因素:(

我知道SL的上漿性能(StarAutoPixel) 我的錯誤做到了。目前還不清楚是什麼,我想實現的。

在校正例子中,TextBox將填補Grid但輸入一個很長的文本將使其增長超過Grid的寬度。

乾杯。

回答

0

除非我誤解了你的問題,否則你所需要做的就是擺脫<ColumnDefinition Width="Auto" />。您的TextBoxTextBlock位於設置爲自動的Grid的第一列。如果你擺脫了第一列定義,他們將在星空列中填滿整個區域,但不會允許它們調整其內容。

編輯

你試過你TextBox設置HorizontalAlignment="Stretch" VerticalAlignment="Stretch"?這應該會導致TextBox使用固定大小,而不是基於內容調整大小。

+0

對不起,我在我的XAML中犯了一個錯誤,所以我的問題並不清楚。現在已經糾正了。 – R4cOON 2010-08-19 08:46:00

+0

除非我誤認爲是默認設置。我確實希望TextBox填充網格列,這就是發生了什麼。但我不希望它超出列的寬度。 我試着在SizeChanged事件上掛鉤並做一些事情,但不幸的是第一次調整是根據綁定的內容完成的:( – R4cOON 2010-08-20 06:12:47

0

在Silverlight中列和行定義或者是:

  • 像素 - 意思是「讓我這個確切的大小」
  • 自動 - 意思是「調整大小以適應最大的子對象在山坳/ row「和
  • Star - 意思是」在Pixel和Auto獲得份額之後給我一部分剩餘部分「。

如果沒有指定它們,則默認爲Star。

「星號」使用的數字只與其他星列/行有關,並且沒有絕對值。兩列1 *和2 *與1000 *和2000 *相同。基本上他們會在任何像素和自動列/行之後留下任何空間的1/3和2/3rds。

根據其他答案,如果你想要一個固定的寬度,這是你想要一個星列的網格的百分比。不是一個自動列,它會調整大小以適應不斷增長的文本框。

+0

在我看來,如前所述,將星號設置爲不設置固定大小,但是因此輸入一些長文本將調整框的大小(我不想),並且綁定到長文本也會做同樣的事情。 – R4cOON 2010-08-19 08:44:51