Window
のサイズのClient
のサイズにWPFコントロール(この例ではGrid
コントロールを使用します)のサイズを変更できません。私はGrid
がデフォルトで利用可能なすべてのスペースを自動的に塗りつぶすことを認識していますが、のWidth
を手動で設定して、別のコントロール(その列のWidth
の1つを持つDataGridをStar
に設定しますそれは何か違いがあります)。ウィンドウの「クライアントエリア」を塗りつぶすコンテンツのサイズを設定する
次のXAMLをご検討ください:
<Window x:Class="TestApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="768" Width="1024"
x:Name="mainWindow">
<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Auto">
<Grid x:Name="testGrid" Background="DarkGray">
</Grid>
</ScrollViewer>
</Window>
し、次のコードビハインド:
using System.Windows;
namespace TestApplication
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
testGrid.Width = mainWindow.Width - (SystemParameters.BorderWidth * 2);
}
}
}
この単純なアプリケーションを実行する場合、Grid
がClient
面積よりやや大きい幅を有していますその結果、Horizontal Scroll Bar
が表示されます。 SystemParameters.BorderWidth
がWindow
のボーダーの幅を正確に計算しない場合はどうなりますか?
最新のMSDNドキュメントのとおり、SystemParameters.BorderWidth
:最小化されていないウィンドウの非クライアント領域の境界線の幅を指定するメトリックを取得します。
+1、 'ScrollViewer'に役立ちます。残念ながら、['ViewportWidth'](http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollcontentpresenter.viewportwidth%28v=vs.110%29.aspx)と[' ViewportHeight'] (http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollcontentpresenter.viewportheight%28v=vs.110%29.aspx)は['ScrollContentPresenter']の依存プロパティではないようです(http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollcontentpresenter%28v=vs.110%29.aspx)。 –