麻烦将项目绑定到WPF中的ListView

时间:2016-04-09 01:01:31

标签: c# wpf

我的ListView标题正确显示,但所有单元格都显示Initialize.ListViewItemsData而不是我的测试数据。

Initialize是班级。

xaml代码:

<ListView x:Name="listViewRoles" Margin="10,146,20,0" IsSynchronizedWithCurrentItem="False" >
        <ListView.View>
            <GridView>
                <GridView.ColumnHeaderContainerStyle>
                    <Style TargetType="{x:Type GridViewColumnHeader}">
                        <Setter Property="IsEnabled" Value="False"/>
                    </Style>
                </GridView.ColumnHeaderContainerStyle>
                <!-- Heder -->
                <GridViewColumn  Header="Stato" Width="50"/>
                <GridViewColumn  Header="Regola" Width="400"/>
                <GridViewColumn  Header="Risultato" Width="320"/>
                <!-- ListView Template-->
                <GridViewColumn x:Name="GridViewColumnName" Header="Name"  Width="200">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <Image x:Name="Image_GridViewColumnName" Width="20" Height="20" Source="{Binding GridViewColumnName_ImageSource}" />
                                <TextBlock Text="{Binding GridViewColumnName_LabelContent}" Width="400" Height="20"  />
                                <Label Content="{Binding GridViewColumnResult}"  />
                            </StackPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>
代码背后的

public ObservableCollection<ListViewItemsData> ListViewItemsCollections { get { return _ListViewItemsCollections; } }
    ObservableCollection<ListViewItemsData> _ListViewItemsCollections = new ObservableCollection<ListViewItemsData>();

    public splashForm()
    {
        InitializeComponent();
        idSearchLbl.Content = string.Empty;
        lblVersion.Content = "Versione : " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

        ListViewItemsCollections.Add(new ListViewItemsData()
        {
            GridViewColumnName_ImageSource = @"C:\Users\develop\TFS\CorridoioNew\FrontEnd\images\avi.png",
            GridViewColumnName_LabelContent = "abcdefghijk",
            GridViewColumnResult ="result ..... content"
        });

        listViewRoles.ItemsSource = ListViewItemsCollections;
    }

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在寻找的xaml代码是

<ListView x:Name="listViewRoles" Margin="10,146,20,0" IsSynchronizedWithCurrentItem="False" >
            <ListView.View>
                <GridView>
                    <GridView.ColumnHeaderContainerStyle>
                        <Style TargetType="{x:Type GridViewColumnHeader}">
                            <Setter Property="IsEnabled" Value="False"/>
                        </Style>
                    </GridView.ColumnHeaderContainerStyle>

                    <GridViewColumn Header="Stato" Width="50">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Image x:Name="Image_GridViewColumnName" Width="20" Height="20" Source="{Binding GridViewColumnName_ImageSource}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn  Header="Regola" Width="400">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding GridViewColumnName_LabelContent}" Width="400" Height="20"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn  Header="Risultato" Width="320">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Label Content="{Binding GridViewColumnResult}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>

如果您不需要指定文本容器类型,可以在ItemContainerStyle中指定行高并使用

简化这些绑定
<ListView x:Name="listViewRoles" Margin="10,146,20,0" IsSynchronizedWithCurrentItem="False" >
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Height" Value="20"/>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.View>
                <GridView>
                    <GridView.ColumnHeaderContainerStyle>
                        <Style TargetType="{x:Type GridViewColumnHeader}">
                            <Setter Property="IsEnabled" Value="False"/>
                        </Style>
                    </GridView.ColumnHeaderContainerStyle>
                    <GridViewColumn Header="Stato" Width="50">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Image x:Name="Image_GridViewColumnName" Width="20" Height="20" Source="{Binding GridViewColumnName_ImageSource}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn  Header="Regola" Width="400" DisplayMemberBinding="{Binding GridViewColumnName_LabelContent}"/>
                    <GridViewColumn  Header="Risultato" Width="320" DisplayMemberBinding="{Binding GridViewColumnResult}"/>
                </GridView>
            </ListView.View>
        </ListView>

你的代码可以正常使用这两种方法。