Вы всегда должны избегать появления асинхронных пустот в вашем коде (за исключением обработчиков событий).
Пожалуйста, обратитесь к этому блогу Стивена за более подробной информацией
Асинхронные пустые методы имеют различную семантику обработки ошибок. Когда исключение выбрасывается из метода асинхронной задачи или асинхронной задачи, это исключение захватывается и помещается в объект задачи. При использовании асинхронных void-методов объект Task отсутствует, поэтому любые исключения, выброшенные из асинхронного void-метода, будут вызваны непосредственно в SynchronizationContext, который был активен при запуске асинхронного void-метода.
blockquote>
Используя ShowMeTheTemplate я узнал часть стиля, это находится на TabItem. Существует намного больше в шаблоне управления по умолчанию, можно интересоваться установкой при переопределении его.
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Selector.IsSelected">
<Condition.Value>
<s:Boolean>True</s:Boolean>
</Condition.Value>
</Condition>
<Condition Property="TabItem.TabStripPlacement" Value="{x:Static Dock.Top}" />
</MultiTrigger.Conditions>
<Setter Property="FrameworkElement.Margin">
<Setter.Value>
<Thickness>-2,-2,-2,-1</Thickness>
</Setter.Value>
</Setter>
</MultiTrigger>