LIstview项绑定但不可见WPF

时间:2017-11-22 06:34:44

标签: c# wpf listview

ListView的ItemsSource显示已加载的项目,但项目在屏幕中不可见。

<UserControl x:Class="...Controls.ControlToolbar"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:TuningInterfaceModel.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>

    <local:StringFormatToImageSourceConverter x:Key="StringToImage" />
</UserControl.Resources>
<Grid>
    <ListView ScrollViewer.VerticalScrollBarVisibility="Disabled" x:Name="tStack">

        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel  VerticalAlignment="Center" HorizontalAlignment="Center">
                    <Image Source="{Binding Path=Key, Converter={StaticResource StringToImage}
 , ConverterParameter=../Images/ControlIcons/{0}.ico}" />
                    <TextBlock Text="{Binding Key}" FontSize="10px"  Width="60px" Margin="2,0,0,0"  />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ListViewItem}">
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True" >
                                    <Setter Property="Cursor" Value="/Images/Cursor/grab.cur"/>
                                </Trigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="IsMouseOver" Value="True" />
                                        <Condition Property="local:MouseExtensions.IsMouseLeftButtonDown" Value="True" />
                                    </MultiTrigger.Conditions>
                                    <Setter Property="Cursor" Value="/Images/Cursor/Handover.cur" />
                                </MultiTrigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>
</Grid>
</UserControl>

enter image description here

1 个答案:

答案 0 :(得分:1)

您的<Style TargetType="{x:Type ListViewItem}">有错。它将Template设置为仅包含没有任何内容的触发器的ControlTemplate

如果我的水晶球没有让我失望,您可能想要移除控制模板并改为使用Style.Triggers

<Style TargetType="{x:Type ListViewItem}">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True" >
            <Setter Property="Cursor" Value="/Images/Cursor/grab.cur"/>
        </Trigger>
    </Style.Triggers>
    <!-- More triggers -->
</Style>