我已經閱讀了很多這種問題的解決方案。他們每個人都不能解決我的問題。無論我將控制器放在哪個容器中,或者在控制器/容器上設置了哪些屬性,它都不會讓步。 我有一個內部控件的滾動查看器。當用戶在運行時調整大小時,我希望它可以隨窗口調整大小。我需要的只是錨點=頂部,底部,左側,右側。我不明白爲什麼這在WPF中如此難以捉摸,以及爲什麼需要涉及容器對象和各種財產分配來完成表單中的單個屬性。但是對於這個問題的每個解決方案仍然會導致我的控件始終處於設計時的大小,因爲窗口在運行時調整大小。在wpf中掌握動態控制大小的簡單方法是什麼?如何使控件在wpf中調整大小,錨點/碼頭屬性等效
回答
控制系統需要伸展,這一切都應該有它:
<MyControl HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
Stretch
替代設置achors雙方各自的兩側。
有關面板的幫助,請參閱this overview。另請參閱documentation of the layout system。
大多數控件自動拉伸,如果你有一個DataGrid應該舒展過,嘗試在Kaxaml本示例,它包含一個DataGrid和一個TextBlock足見其大小:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<DataGrid Name="grid">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Name"/>
<DataGridTextColumn Binding="{Binding Tag}" Header="Occupation"/>
</DataGrid.Columns>
<FrameworkElement Name="Skeet" Tag="Programmer"/>
<FrameworkElement Name="Gravell" Tag="Programmer"/>
<FrameworkElement Name="Steve" Tag="Coffee Getter"/>
</DataGrid>
<TextBlock Grid.Row="1">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {1}">
<Binding ElementName="grid" Path="ActualWidth"/>
<Binding ElementName="grid" Path="ActualHeight"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Grid>
</Window>
如果大小的窗口下DataGrid的ScrollBars應該出現。
我試過每一種對齊設置的組合。每次控制嚴格保持其設計時間尺寸。必須有別的東西阻止它調整大小,我只是看不到。 – Mike 2011-05-12 15:02:47
控件所在的面板必須提供邊界,否則它將無法伸展,scrollviewer不會這樣做,因爲它的整個目的是可以查看任何大小的控件,它們通常不會限制其內容。編輯:實際上它也適用於ScrollViewer,在某些情況下,它取決於控件。無論如何你使用的是什麼控制?其數據網格爲 – 2011-05-12 17:28:45
。我試圖讓scrollviewer的大小調整到窗口的大小(或者窗口的可用大小,還有其他控件,但這是需要變大的那個),但是如果數據網格仍然太大,我希望scrollviewer提供一種方法來獲得越界內容。 – Mike 2011-05-12 18:56:14
我認爲不調整大小的控件是您的自定義控件。
- 使用DockPanel作爲容器。
- 從控件中刪除顯式寬度和高度屬性。
如果你在VS2008中工作,那麼這會造成不便,因爲在設計器中查看時,你的控件會崩潰到最小尺寸。
表達式混合和從VS2010開始都尊重設計器名稱空間,因此您可以指定設計時間只控制大小。
對於以下內容添加到您的控制:
<UserControl ...
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignWidth="WWW" d:DesignHeight="HHH">
....
</UserControl>
d:DesignWidth和d:DesignHeight指定設計時的寬度和高度。
這個問題很舊,但自從我在這裏找到我以後,我想我會拋出我的解決方案。下面的代碼用於帶有兩個選項卡的選項卡控件,每個選項卡都包含一個用於填充選項卡的控件。我刪除了明確設置的寬度和高度,並將水平和垂直對齊設置爲在我想調整大小的所有控件上自動調整。選項卡控件通過主窗口延伸。選項卡中的控件伸展以填充選項卡。信息來自這裏的答案。我只是舉了一個完整的例子。
希望這對某人有用。
<TabControl HorizontalAlignment="Stretch"
Margin="91,0,0,0" Name="tabControl1"
VerticalAlignment="Stretch" >
<TabItem Header="DataGrid" Name="tabItem1">
<Grid>
<DataGrid AutoGenerateColumns="False"
HorizontalAlignment="Stretch"
Name="dgFTPLog"
VerticalAlignment="Stretch"
Margin="6,6,0,0" />
</Grid>
</TabItem>
<TabItem Header="Log" Name="tabItem2">
<Grid>
<TextBox
HorizontalAlignment="Stretch"
Margin="6,6,0,0" Name="txtLog"
VerticalAlignment="Stretch"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
TextChanged="txtLog_TextChanged" />
</Grid>
</TabItem>
</TabControl>
這也引起了我的悲痛,AlexK幫助我看到了光明。技巧是不設置高度和寬度....將它們設置爲AUTO
並使用MARGIN
來設置大小。將HORIZONTALALIGNMENT
和VERTICALALIGNMENT
設置爲STRETCH
,然後錨定功能起作用。
這也適用於會面。你節省了我的一天。感謝:D – 2013-02-12 07:17:50
我也遇到過這個問題。 並嘗試綁定到父控件ActualHeight和ActualWidth屬性,除此之外,只有當您通過XAML後面的代碼執行時纔有效。
即 XAML
<MyParentControl x:name="parentControl" SizeChanged="parentControl_SizeChanged"> <ChildControl x:name=childControl" /> </MyParentControl>
代碼beind
private void parentControl_SizeChanged(object sender, SizeChangedEventArgs e)
{
childControl.Height = parentControl.ActualHeight;
childControl.Width = parentControl.ActualWidth;
}
- 1. WPF - 在調整窗口大小的控件調整大小
- 2. 在WPF中調整控件的大小是否調整其StackPanel大小?
- 3. 自動調整大小WPF控件
- 4. WPF:自動控件大小調整
- 5. WPF無法調整控件的大小
- 6. 如何自動調整TabItem(WPF)中的網格控件大小?
- 7. 如何禁用WPF中用戶控件的大小調整
- 8. wpf綁定屬性以在hight中調整bmp大小dpi
- 9. 在WPF控件上實現調整大小的控件
- 10. 如何根據WPF中的窗口大小調整某個控件的大小?
- 11. 如何在調整大小的窗口中調整控件大小?
- 12. WPF中的控件在調整大小時粘在一起
- 13. 調整WPF控件大小以適應窗口大小
- 14. 如何調整DevExpress控件的大小
- 15. 在wpf中託管ocx控件時調整大小問題
- 16. 隱藏控件,同時在wpf中調整窗口大小
- 17. 在調整jQuery對話框大小時調整控件大小
- 18. 如何使控件在Silverlight中可調整大小
- 19. 如何使文本框控件在VBA中可調整大小
- 20. 我如何使錨定的子控件調整自己的大小?
- 21. 如何調整ListView和TreeView控件與窗口大小調整WPF
- 22. 如何使用WPF組件中的大小調整百分比?
- 23. c#在splitcontainer中調整大小控件
- 24. WebBrowser控件調整大小
- 25. JavaFX控件大小調整
- 26. 調整大小控件
- 27. 調整窗體大小調整控件
- 28. WPF列大小調整性能問題
- 29. 如何在Windows窗體中隱藏控件的調整大小控點?
- 30. 如何在WPF圖表上調整點的大小?
你能告訴我們你現在的XAML代碼? – svick 2011-05-10 20:59:08
您可以嘗試寬度/高度=「*」和/或使用堆疊面板 – deathrace 2013-01-21 17:46:02