WPF:Listview中的Expander绑定

时间:2017-07-30 17:00:21

标签: c# wpf

我想要使用包含一些信息的扩展器的ListView。所以,我制作了这段代码。我不确定这样的绑定扩展器是否正确。我只是尝试像ListViewItem一样绑定,但是当我尝试扩展器根本不工作时。这是我的代码。

XAML:
    

    <Grid Grid.Row="2">
        <ListView x:Name="lv">
            <ListView.Template>
                <ControlTemplate>
                    <HeaderedItemsControl>
                        <ItemsPresenter/>
                    </HeaderedItemsControl>
                </ControlTemplate>
            </ListView.Template>

            <ListView.ItemTemplate>
                <DataTemplate DataType="{x:Type local:LogBase}">
                    <Expander Grid.Column="0" HorizontalAlignment="Center">
                        <Expander.HeaderTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal"> <!-- why this code is not wokring...? -->
                                    <TextBlock Text="{Binding No}"/>
                                    <TextBlock Text="{Binding Timestamp}"/>
                                    <TextBlock Text="{Binding Type}"/>
                                </StackPanel>
                            </DataTemplate>
                        </Expander.HeaderTemplate>
                    </Expander>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
代码背后的代码:

public partial class MainWindow : Window
{
    public List<LogBase> logs { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        logs = new List<LogBase>();

        logs.Add(new LogBase()
        {
            No = "1",
            Timestamp = "123456789",
            Type = "Tcp"
        });

        logs.Add(new LogBase()
        {
            No = "2",
            Timestamp = "123456789",
            Type = "Tcp"
        });

        logs.Add(new LogBase()
        {
            No = "3",
            Timestamp = "123456789",
            Type = "Tcp"
        });


        lv.ItemsSource = logs;

        DataContext = this;
    }

}

public class LogBase
{
    public string No { get; set; }
    public string Timestamp { get; set; }
    public string Type { get; set; }
}

为了更好地理解我捕获了我想要的东西

Now my program's situation

如果您有任何意见,请为我发表评论!

1 个答案:

答案 0 :(得分:0)

您还需要绑定标头以将DataContext的{​​{1}}设置为正确。这是由HeaderTemplate完成的。在您的情况下,只需使用Header="{Binding HeaderSource}"直接绑定到项目:

Header="{Binding}"

之后,您的代码完美无缺。