1,Rss实现接口:INotifyPropertyChanged(using System.ComponentModel;)
2,输入固定代码
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propName) {
if (PropertyChanged!=null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
3,修改set和增加IsSelected(因为这个属性要和treeview的IsSelected对应)
public string Text {
get { return text; }
set { text = value;
OnPropertyChanged(“Text”);
}
}
string xmlUrl;
public string XmlUrl { //createChilren的时候new 把XmlUrl 读取并赋值
get { return xmlUrl; }
set { xmlUrl = value;
OnPropertyChanged("XmlUrl");
}
}
public bool IsSelected
{
get { return isSelected; }
set {
isSelected = value;
OnPropertyChanged(“IsSelected”);
}
}
4,界面的话增加
<TreeView x:Name="tr_1" TreeViewItem.Selected="TreeView_Selected">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<!-- <Setter Property="IsExpanded" Value="{Binding IsExpanded}"/> 预留-->
<!-- <Setter Property="Background" Value="Red"/>/> 预留-->
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</TreeView.ItemContainerStyle>
6,绑定好后就是处理TreeView_Selected函数了
private void TreeView_Selected(object sender, RoutedEventArgs e)
{
TreeViewItem tviSelected = e.OriginalSource as TreeViewItem;
Student std = (Student)tviSelected.Header;
MessageBox.Show(std.Name);
}
//
上面测试了选择的的确是student数据对象
下面是循环读取条目的代码,treeview就到这里了,以后都是跟读取xml有关的东西了
private void TreeView_Selected(object sender, RoutedEventArgs e)
{
// TreeViewItem tviSelected = e.OriginalSource as TreeViewItem;
var tviSelected = e.OriginalSource as TreeViewItem;
// Rss std = (Rss)tviSelected.Header;
var std = (Rss)tviSelected.Header;
if (std.ParentId == -1)
{
for (int i = 0; i < rsslist.Count; i++)
{
if (rsslist[i].Id == std.Id)
{
tx_1.Text = "";
for (int j = 0; j < rsslist[i].Children.Count; j++)
{
tx_1.Text += Environment.NewLine+rsslist[i].Children[j].XmlUrl + Environment.NewLine;
}
}
}
}
else { //试着加载一下xml
/*// XmlTextReader Reader = new XmlTextReader("http://hzw.gov.cn/wzpzcs/xqywRSSdy/index.shtml");
// XmlTextReader Reader = new XmlTextReader("http://cn.engadget.com/rss.xml");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Reader);*/
tx_1.Text= wangshangFD(std.XmlUrl);
//加载的函数预留着
}//else
}//TreeView_Selected