Как получить высоту строки заголовка основных окон приложения? - PullRequest
6 голосов
/ 10 октября 2010

Я использую призму для загрузки видов в регион.Проблема заключается в том, что загруженный вид перекрывает строку заголовка основных окон - панель содержит заголовок, кнопки «закрыть», «свернуть / развернуть».Как я могу получить высоту строки заголовка?Предпочитаю, чтобы это было правильно в кодах xaml.

Ответы [ 2 ]

15 голосов
/ 11 октября 2010

Через некоторое время я разобрался:

<Window xmlns:local="clr-namespace:System.Windows;assembly=PresentationFramework">
  <YourView Height="{x:Static local:SystemParameters.WindowCaptionHeight}" />
</Window>

Надеюсь, это поможет!

0 голосов
/ 29 ноября 2018

SystemParameters.WindowCaptionHeight в пикселях, тогда как WPF требует экранных кординатов.Вы должны конвертировать его!

<Grid>
    <Grid.Resources>
        <wpfApp1:Pixel2ScreenConverter x:Key="Pixel2ScreenConverter" />
    </Grid.Resources>
    <YourView Height="{Binding Source={x:Static SystemParameters.WindowCaptionHeight},Converter={StaticResource Pixel2ScreenConverter}}" />
</Grid>

aa

public class Pixel2ScreenConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double pixels = (double) value;
        bool horizontal = Equals(parameter, true);

        double points = 0d;

        // NOTE: Ideally, we would get the source from a visual:
        // source = PresentationSource.FromVisual(visual);
        //
        using (var source = new HwndSource(new HwndSourceParameters()))
        {
            var matrix = source.CompositionTarget?.TransformToDevice;
            if (matrix.HasValue)
            {
                points = pixels * (horizontal ? matrix.Value.M11 : matrix.Value.M22);
            }
        }

        return points;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...