亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

WPF中TreeView控件如何獲取選中的TreeViewItem

系統(tǒng) 2819 0

WPF中TreeView控件如何獲取選中的TreeViewItem對(duì)象?

WPF的TreeView控件與過(guò)去的TreeView控件完全不同,幾乎是從頭重寫了一遍,其最重要的特點(diǎn)之一就是支持綁定到層次型數(shù)據(jù)。只需給其指定一個(gè)HierarchicalDataTemplate即可。非常方便。請(qǐng)看以下例子:

<Window.Resources>
<!--大學(xué)-->
<HierarchicalDataTemplate ItemsSource="{Binding Path=Academies}" DataType="{x:Type local:University}">
<TextBlock Text="{Binding Path=UniversityName}"></TextBlock>
</HierarchicalDataTemplate>
<!--學(xué)院-->
<HierarchicalDataTemplate ItemsSource="{Binding Path=Departments}" DataType="{x:Type local:Academy}">
<TextBlock Text="{Binding Path=AcademyName}"></TextBlock>
</HierarchicalDataTemplate>
<!--系-->
<DataTemplate DataType="{x:Type local:Department}">
<TextBlock Text="{Binding Path=DepartmentName}"/>
</DataTemplate>

</Window.Resources>

其中,大學(xué)-->學(xué)院-->系,構(gòu)成一個(gè)典型的對(duì)象層次。

以下XAML代碼實(shí)現(xiàn)綁定:

<TreeView ……>
<TreeViewItem ItemsSource="{Binding}" Header="大學(xué)列表">
</TreeViewItem>

只需給TreeView的DataContext賦一個(gè)University的對(duì)象集合,就可以自動(dòng)顯示:

WPF中TreeView控件如何獲取選中的TreeViewItem對(duì)象?

然而,在寫這個(gè)小程序時(shí),我發(fā)現(xiàn)了一個(gè)問(wèn)題:當(dāng)TreeView綁定到數(shù)據(jù)集合后,TreeView.SelectedItem返回的不是我預(yù)想中的TreeViewItem,而就是數(shù)據(jù)對(duì)象本身(如University,Academy等)。

這雖然方便了數(shù)據(jù)對(duì)象的提取,卻帶來(lái)其他的麻煩,比如,我可能需要將選中的節(jié)點(diǎn)加上紅色標(biāo)記以突出顯示,或者是自動(dòng)展開(kāi)選中節(jié)點(diǎn)的子樹(shù),或者訪問(wèn)其父節(jié)點(diǎn)對(duì)象,這都需要獲取TreeViewItem對(duì)象。

我想了多種方法在TreeView本身的SelectedItemChanged事件中嘗試取出選中節(jié)點(diǎn)對(duì)應(yīng)的TreeViewItem對(duì)象,均無(wú)功而返。

最后的解決方法很戲劇化,其實(shí)不根本需要鉆牛角尖,非要在SelectedItemChanged事件中干這事。TreeViewItem本身有一個(gè)Selected事件,其參數(shù)e中就提供了需要的TreeViewItem對(duì)象。

于是,解決方案很簡(jiǎn)單,在TreeView中響應(yīng)TreeViewItem的附加事件Selected:

<TreeView Name="treeView1" TreeViewItem.Selected="treeView1_Selected" ……>
<T/reeView>

其事件代碼如下:


private void treeView1_Selected(object sender, RoutedEventArgs e)
{

//e.OriginalSource就是TreeViewItem對(duì)象,你可以將其保存到窗體類的某個(gè)私有字段中,或者直接使用它,如下所示:
(e.OriginalSource as TreeViewItem).IsExpanded = true;
}

搞定!

當(dāng)前正在制作給企業(yè)培訓(xùn)所用的WPF教學(xué)PPT,對(duì)其特性進(jìn)行了較多的探索與應(yīng)用,談些感觸:

WPF比原先的Windows Form靈活得多,有幾個(gè)特性我實(shí)在是非常欣賞:

(1)模板(包括控件模板與數(shù)據(jù)模板)

(2)數(shù)據(jù)綁定

(3)路由事件和依賴屬性

我個(gè)人認(rèn)為,在Windows桌面應(yīng)用領(lǐng)域,WPF遲早必將全面取代Windows Form。諸位.NET程序員可以提早做些準(zhǔn)備。

WPF中TreeView控件如何獲取選中的TreeViewItem對(duì)象?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 奇米视频在线观看 | 久久天天躁夜夜躁2019 | 激情综合五月亚洲婷婷 | 久久九色综合九色99伊人 | 日韩亚洲视频 | 福利午夜国产网站在线不卡 | 欧美大成色www永久网站 | 国产欧美一区视频在线观看 | 四虎4w4w| 久久视频这里只有精品35 | 黄色网毛片 | 亚洲精品色 | 亚洲精品国产经典一区二区 | 亚洲美日韩 | 波多结衣一区二区三区 | 日本天天色 | 91新视频| 噜噜啪 | 亚欧毛片基地国产毛片基地 | 久久精品亚洲欧美va | 一本一本久久a久久精品综合 | 国产dvd毛片在线视频 | 久久九九精品视频 | 91成人在线播放 | 91久久国产综合精品女同国语 | 动漫精品一区二区3d | 亚洲在线视频播放 | 免费区欧美一级毛片 | 亚洲国产欧洲综合997久久 | 国产一区二区三区日韩欧美 | 亚洲视频手机在线观看 | 日韩欧美亚洲国产精品字幕久久久 | 老妇综合久久香蕉蜜桃 | 国产伦精品一区二区三区网站 | 日本国产亚洲 | 色综合社区 | 亚洲精品国产成人专区 | 久久综合中文字幕 | 不卡一区在线观看 | 激情五月综合综合久久69 | 亚洲一区二区视频 |