.xaml页面代码
<Grid Loaded="Grid_Loaded">
<ListView Height="315" HorizontalAlignment="Left" Margin="168,223,0,0" Name="listView_Demo" VerticalAlignment="Top" Width="738">
<ListView.View>
<GridView>
<GridViewColumn Header="序号" Width="150" DisplayMemberBinding="{Binding Num}"/>
<GridViewColumn Header="姓名" Width="200" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="成绩" Width="150" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid Width="150">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<Image Height="18" Width="18" Name="imageName" Source="pack://application:,,,/res/list_icon/DC_online.ico"/>
<TextBlock Width="Auto" TextAlignment ="Center" Text="{Binding State}" Grid.ColumnSpan="2" />
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="935,275,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>
xaml后台代码
public partial class VideoPage : Page
{
public VideoPage()
{
InitializeComponent();
}
class StudentInfo
{
public int Num { set; get; }
public string Name { set; get; }
public string State { set; get; }
public StudentInfo(int num, string name, string state)
{
this.Num = num;
this.Name = name;
this.State = state;
}
}
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
listView_Demo.Items.Add(new StudentInfo(11, "小花", "在线"));
listView_Demo.Items.Add(new StudentInfo(12, "小草", "在线"));
listView_Demo.Items.Add(new StudentInfo(13, "小蚂蚁", "离线"));
}
private void button1_Click(object sender, RoutedEventArgs e)
{
ListViewItem myListBoxItem = (ListViewItem)listView_Demo.ItemContainerGenerator.ContainerFromItem(listView_Demo.SelectedItem);
ContentPresenter contentpresenter = FindVisualChild<ContentPresenter>(myListBoxItem);
DataTemplate MyDataTemplate = contentpresenter.ContentTemplate;
Image myTextBlock = MyDataTemplate.FindName("imageName", contentpresenter) as Image;
myTextBlock.Dispatcher.Invoke(new Action(() => { myTextBlock.Source = new BitmapImage(new Uri("pack://application:,,,/res/list_icon/DC_offline.ico")); }));
if (myTextBlock != null)
{
MessageBox.Show(myTextBlock.Name);
}
}
private childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
{
return (childItem)child;
}
else
{
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
{
return childOfChild;
}
}
}
return null;
}
效果图如下:选中listview行,点击按钮切换图片