На основании принятого ответа @Matt Hamilton, для справки, я создал вариант, который не требует привязки, поскольку он использует свойство HasItems
ListBox
для запуска пустого шаблона:
<ListBox.Style>
<Style x:Key="EmptyListStyle"
TargetType="ListBox"
BasedOn="{StaticResource {x:Type ListBox}}">
<Style.Triggers>
<!-- Use ListBox.HasItems instead of Binding -->
<Trigger Property="HasItems" Value="False">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock>No items to display</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.Style>
Это позволяет использовать стиль глобально, без необходимости знать имя свойства, к которому привязан список. Я нашел это полезным при привязке к CollectionViewSource
, определенному в XAML.
Мне не известны какие-либо недостатки этого метода, приветствуются комментарии, если вы их найдете.