У меня возникли проблемы с определением размера элемента управления WPF (в этом примере я буду использовать элемент управления Grid
) до размера Client
области Window
.Я понимаю, что Grid
автоматически заполняет все доступное пространство по умолчанию, однако мне нужно, чтобы Grid
Width
был установлен вручную, чтобы я мог привязаться к нему из другого элемента управления (DataGrid с одним из столбцов *Для 1007 * установлено значение 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
в Window
, в результате чего отображается Horizontal Scroll Bar
.Если SystemParameters.BorderWidth
не точно вычисляет ширину границы Window
, что делает?
В соответствии с самой последней документацией MSDN, SystemParameters.BorderWidth
: Получает метрику, которая определяет границуширина неклиентской области не минимизированного окна.