Если у меня есть меню, определенное следующим образом:
<Menu>
<MenuItem Header="Stuff" />
</Menu>
Когда это визуализируется, ContentPresenter внутри MenuItem заканчивается содержимым, подобным этому:
<TextBlock Text="{Binding}" />
, что означаетчто он наследует стиль TextBlock по умолчанию, что не всегда желательно.
Я знаю, что могу изменить свой MenuItem на что-то вроде:
<MenuItem>
<MenuItem.Header>
<TextBlock Text="Stuff" Style="{DynamiResource MyStyle}" />
</MenuItem.Header>
</MenuItem>
, но это будет раздражатьтребование.
Я знаю, что могу переопределить стиль по умолчанию MenuItem для явной установки ContentTemplate, но это будет означать, что если содержимое было чем-то отличным от String, или если конкретный экземпляр MenuItem определилContentTemplate, мой стиль по умолчанию переопределяет это - что было бы плохо.
Я знаю, что где-то в магии WPF есть конвертер или что-то, что берет содержимое типа String и создает DataTemplate, который используетTextBlock, но я не могу найти, где это.Я полагаю, что должен быть какой-то способ перехватить эту магию, но, поскольку я не могу определить, где происходит магия, я не могу понять, как ее перехватить.
Есть идеи?
Дэвид Маллин