Dav*_*ard 16 data-binding wpf listbox styling
任何人都可以建议显示Textblock的最佳方式(使用诸如"List Empty"之类的文本),以便将其可见性绑定到Items.Count.
我已经尝试了以下代码并且无法使其工作,所以认为我必须做错了.
<ListBox x:Name="lstItems"
ItemsSource="{Binding ListItems}">
</ListBox>
<TextBlock Margin="4" FontStyle="Italic" FontSize="12" Text="List is empty" Visibility="Collapsed">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=lstItems, Path=Items.Count}" Value="0">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
Tim*_*res 27
您的代码中的问题是,在文本块中设置Visibility的值比在样式中设置它具有更高的优先级.因此,即使触发发生,触发器内的设置也无效.将XAML更改为:
<TextBlock Margin="4" FontStyle="Italic" FontSize="12" Text="List is empty" >
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=lstItems, Path=Items.Count}" Value="0">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
可见性的设置都在风格中并且有效(至少在我的演示项目中).