我通过这样绑定一个ListView数据<ListView ItemsSource="{Binding NameList}" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding ServerDomain}" />
        </DataTemplate>
    <ListView.ItemTemplate>
</ListView>我现在是想,在ListView绑定后的最尾出添加一行自定义的行,放一些超链接,作为其他操作。如何在绑定的数据最尾添加多一行自定义的行呢?

解决方案 »

  1.   

    <DataTemplate>
    <StackPanel Orientation="Horizontal">
      <TextBlock Text="{Binding ServerDomain}" />
      <Button Content="{Binding YourUri}" Click="---"/>
    </StackPanel>
              
            </DataTemplate>Click 中实现你要导航的东西就可以了
      

  2.   

    若是资源的话 SelectedChanged 中 也可以   但为了方便引用 加入一行 D="{Binding}"
    SelectedChanged  读取 DataContext 中找到你的URI
      

  3.   

    我不是要每一个绑定项下面都跟一个自定义的行,而是比如共有10条数据,ListView先显示这10条数据,在这10条数据下方(即第11行)才显示我自定义的行
      

  4.   

    那 你就在 ItemsSrouce=NameList赋值前,NameList添加一个实体  但实体的ServerDomain设置成URI 
      

  5.   

    我这样写,运行时出现了一个异常“在使用 ItemsSource 之前,项集合必须为空。”<ListView ItemsSource="{Binding NameList}" >
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding ServerDomain}" />
            </DataTemplate>
        <ListView.ItemTemplate>
    </ListView>
    <ListViewItem>
        <Button>建立服务器</Button>
    </ListViewItem>
      

  6.   

    为啥不把这个自定义的行写到ListView外面? 这个自定义行和ListView有什么联系么?
      

  7.   

    不需要理会 listview需要更改的是你的数据源 NameList打个比方
    var list = new string[] { "A", "B", "C", "D" };
    var Namelist = list.Select(item => new { flag = 0, ServerDomain = item }).ToList();Namelist.Add(new { flag = 1, ServerDomain = "Custom Content" });foreach (var item in Namelist)
    {
        Console.WriteLine("{0}, {1}", item.flag, item.ServerDomain);
    }lv.ItemsSource = Namelist;
    然后设置 DataTemplate.Trigger 就可以了
    <ListView x:Name="lv">
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn Header="Server Domain">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Grid>
                                    <TextBlock x:Name="block" Text="{Binding ServerDomain}" />
                                </Grid>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding Path=flag}" Value="1">
                                        <Setter TargetName="block" Property="Foreground" Value="blue"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>