我無法弄清楚如何正確管理其單元格中的用戶控件的網格列的寬度。我有這樣的XAML的窗口:防止網格中的控件更改其列寬
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Content="Button" Width="100" HorizontalAlignment="Left"/>
<TextBox Grid.Row="1" />
<local:UserControl1 Grid.Row="2"
HorizontalAlignment="Left" VerticalAlignment="Top"/>
</Grid>
和用戶控制是一個繪圖集舒展需要:
<UserControl x:Class="WpfApplication1.UserControl1"
Height="auto" Width="auto">
<Grid Background="Aqua">
<Path Fill="Coral" Stroke="Black" StrokeThickness="1"
Stretch="Uniform"
HorizontalAlignment="Left" VerticalAlignment="Top">
<Path.Data>
<RectangleGeometry Rect="40,20, 140,30" RadiusX="10" RadiusY="10" />
</Path.Data>
</Path>
</Grid>
</UserControl>
爲了幫助我已經設置在藍色的用戶控件的背景。
我想列的寬度忽略用戶控件的「自然」大小。我的意思是我希望用戶控件不在列的佈局中確定寬度,而是將其寬度調整爲任何寬度的列。
在這個例子中,最初網格會將列寬設置爲按鈕的值,用戶控件將使用列寬來調整自身的大小。然後,如果在文本框中輸入了長文本,只要文本框開始比按鈕更寬,並且列開始也調整大小,則用戶控件將調整爲保持與列相同的大小。
我嘗試過拉伸值的組合,並且還在用戶控件中使用了MeasureOverride()。後者不起作用,因爲收到的AvalaibleSize是無窮大,而不是列寬。
這有助於很多,謝謝,我標記了問題的答案。在真實的情況下,我不能使用文本框(或者它需要隱藏,但我不想這樣做),並且由於該列將包含多個控件,因此我將無法綁定到特定的控件。我已經閱讀了關於綁定到gid ColumnDefinition的其他線程,但這並不成功,所以我仍然在尋找這種可能性。 – 742 2010-05-10 17:51:10