Ale*_*lex 51 .net wpf listbox datatemplate
我想知道人们如何处理没有项目的ListBox控件?例如,我想绑定搜索结果列表,但如果没有找到结果,我想显示"未找到结果".
我目前解决这个问题的方法是,如果结果集count = 0,我会隐藏列表框,并显示带有"找不到结果"消息的标签.理想情况下,我想要像ASP .NET datagrid EmptyTemplate解决方案.
干杯
Mat*_*ton 103
我在这段代码上取得了一些成功:
<Style TargetType="ListBox" x:Key="ListStyle" BasedOn="{StaticResource {x:Type ListBox}}">
<Style.Triggers>
<DataTrigger
Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Items.Count}"
Value="0"
>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock>No items to display</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
g t*_*g t 16
根据@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>
Run Code Online (Sandbox Code Playgroud)
这允许全局使用样式,而不必知道列表绑定的属性名称.我发现它绑定到CollectionViewSourceXAML中定义的时很有用.
我不知道这种方法的任何缺点,欢迎评论,如果你应该找到任何.