Это старый поток, да, и у него есть несколько хороших идей, но я не был удовлетворен.
Моя проблема немного отличалась тем, что мне нужно, чтобы ApplicationMenu расширялся только настолько, чтобы соответствовать любому элементу управленияэто было помещено во вспомогательную панель.
В конце концов я глубоко копал и нашел решение, которое меня порадовало.Это не решает проблему «заполнить экран», но я надеюсь, что это поможет другим, кто приземлится здесь, в поисках решения проблемы, аналогичной моей.Извините, если похоже, что я пытаюсь похитить нить.Я не собираюсь.
По сути, я решил проблему фиксированной ширины и высоты, изменив стиль ленты:
- Откройте сборку ленты в JetBrains DotPeek
- Откройте ресурсы / System.Windows.Controls.Ribbon.g.resources / Themes / generic.baml
- Скопируйте весь словарь ресурсов в файл .xaml в своем проекте.Возможно, вам удастся использовать только его часть, но я решил взять все это целиком.
В этот момент вы можете спросить: «Почему бы просто не использовать VS или Blend илиShowMeTheTemplate вместо DotPeek? "Все эти инструменты с треском провалились на ленте в сборе.Не знаю почему.Они не сказали.Одна из проблем, возникающих при использовании DotPeek, заключается в том, что некоторые ссылки на пространства имен нужно будет скорректировать, но это не слишком сложно, поэтому я не буду вдаваться в подробности.
Итак, теперь у вас есть все стили ишаблоны, иди поищи разметочную разметку.
Сначала исправь ширину:
- Ищи сетку, в определении третьего столбца которой статическое значение равно 300. Можно поискать
<ColumnDefinition Width="300"/>
.Есть только один. - Измените
"300"
на "Auto"
.
Затем установите высоту:
- Найдите определение
PART_SubmenuPlaceholder
Граница.Вы можете искать x:Name="PART_SubmenuPlaceholder"
.Это примерно на 50 строк ниже изменения, которое вы сделали для ширины. - Эта граница привязывает свойство Height к свойству ActualHeight элемента управления "MainPaneBorder":
Height="{Binding ElementName=MainPaneBorder, Path=ActualHeight}"
. - Удалить эту высотуопределение.
Теперь, когда вы изменили стиль, просто добавьте этот словарь ресурсов в ваш xaml, и он должен применить себя к ленте.