8,736
社区成员
发帖
与我相关
我的任务
分享
<ListView Height="300" Name="listView1" Width="730" ItemsSource="{Binding}" VerticalAlignment="Top" >
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=RowNo}" Width="30"/>
<GridViewColumn Width="150" Header="检查项目">
<GridViewColumn.CellTemplate>
<DataTemplate>
<WrapPanel x:Name="dgWrap">
<TextBox Height="60" Width="100" TextWrapping="Wrap" HorizontalAlignment="Left" Name="txtProjectContect" VerticalAlignment="Top" Text="{Binding Path=Text}"/>
<Button Height="17" Name="btnDeleteProject" Width="20" Margin="-5,60,0,0" ToolTip="删除本项及其检查内容" Click="btnDeleteProject_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<Image Source="res/btn_del.png" x:Name="imgbtn"/>
</ControlTemplate>
</Button.Template>
</Button>
</WrapPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="检查内容" Width="300">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListView Height="auto" Name="listView2" Width="280" ItemsSource="{Binding Path=childClass}" VerticalAlignment="Top" >
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=RowNo}" Width="40"/>
<GridViewColumn Header="内容" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Height="50" Name="txtChildText" Width="410" TextWrapping="Wrap" Text="{Binding Path=Text}"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Height="17" Name="btnDeleteContent" Width="20" Margin="-5,60,0,0" ToolTip="删除检查内容" Click="btnDeleteContent_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<Image Source="res/btn_del.png" x:Name="imgbtn"/>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
private void dataBinding()
{
List<Class> clist = new List<Class>();
Class cl = null;
ChildClass ch = null;
for (int i = 0; i < 5; i++)
{
cl = new Class();
cl.RowNo = i;
cl.Text = "父级内容" + i.ToString();
for (int j = 0; j < 5; j++)
{
ch = new ChildClass();
ch.RowNo = j;
ch.Text = "子级内容" + j.ToString();
cl.childClass.Add(ch);
}
clist.Add(cl);
}
this.listView1.ItemsSource = null;
this.listView1.ItemsSource = clist;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WpfTest
{
[Serializable]
public class Class
{
public Class()
{
this.childClass = new List<ChildClass>();
}
public int RowNo { get; set; }
public string Text { get; set; }
public List<ChildClass> childClass { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WpfTest
{
[Serializable]
public class ChildClass
{
public int RowNo { get; set; }
public string Text { get; set; }
}
}
xmlns:my="clr-namespace:wrenchclient"
2.按钮绑定一个Command
<Button Grid.Column="1" Height="17" Name="btnDeleteProject" Width="20" Margin="-5,60,0,0" ToolTip="删除本项及其检查内容" >
<Button.Command>
<my:MyCommand/>
</Button.Command>
</Button>
3. 后台实现:
public class MyCommand : ICommand
{
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
MessageBox.Show("Hello World");
}
}
至于你的问题本身,我觉得有两种可能:跟模板嵌套有关 ,导致出现未知bug
<Button Grid.Column="1" Height="17"
CommandParameter="{Binding Path=Text}" Name="btnDeleteProject" Width="20" Margin="-5,60,0,0" ToolTip="删除本项及其检查内容" >
<Button.Command >
<my:MyCommand></my:MyCommand>
</Button.Command>
</Button>
[/quote]
感谢你们两位大神@wangjnzi_peng的帮忙,现在还有个问题,就是我还要在listView2中添加一列,用来显示一个分数,本来这个textbox的值改变时要触发事件(TextChanged)的,但是现在事件都不能用了,改成用命令的话该怎么去实现呢?
<GridViewColumn Header="分值" Width="60">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Width="50" Name="txtScore" Text="{Binding Path=Score}">
</TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<Button Grid.Column="1" Height="17"
CommandParameter="{Binding Path=Text}" Name="btnDeleteProject" Width="20" Margin="-5,60,0,0" ToolTip="删除本项及其检查内容" >
<Button.Command >
<my:MyCommand></my:MyCommand>
</Button.Command>
</Button>
<Button.Template>
<ControlTemplate TargetType="Button">
<Image Source="res/btn_del.png" x:Name="imgbtn"/>
</ControlTemplate>
</Button.Template>
类似这种的定义都先删除,代码不是自己写的吧?this.listView1.ItemsSource = null;
this.listView1.ItemsSource = clist;
???private void btnDeleteContent_Click(object sender, RoutedEventArgs e)
{
}