Почему мы должны использовать их, а не обычные?
что является преимуществами использования этого:
new Uri("pack://application:,,,/File.xaml");
по этому:
new Uri("/File.xaml", UriKind.Relative);
Первый - вы можете использовать кросс-сборку, добавив имя сборки после трех запятых. Таким образом, вы можете создать общую библиотеку с общими стилями и другими достоинствами XAML, которые могут использоваться несколькими сборками.
Синтаксис выглядит следующим образом:
pack://application:,,,/Common;component/CommonResources.xaml
где Common - это имя сборки, а все, что находится после компонента, - это путь внутри этой сборки к сопоставленному ресурсу. Последний может использоваться только внутри одной сборки (и должен быть предпочтительным).
Я часто использую его для ResourceDictionaries, находящихся в общей сборке над несколькими сборками модульного типа.