日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 2779 0

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

WPF的TreeView控件與過去的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è)問題:當(dāng)TreeView綁定到數(shù)據(jù)集合后,TreeView.SelectedItem返回的不是我預(yù)想中的TreeViewItem,而就是數(shù)據(jù)對(duì)象本身(如University,Academy等)。

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

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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 方正县| 保靖县| 信丰县| 启东市| 于田县| 龙川县| 西昌市| 祁阳县| 泸州市| 五华县| 绥芬河市| 丰城市| 卓资县| 凤城市| 莎车县| 五华县| 乐都县| 蒙阴县| 大兴区| 邹城市| 嫩江县| 翁源县| 江华| 沧州市| 南丰县| 连江县| 北流市| 渝中区| 汉阴县| 沙湾县| 盘山县| 阿克| 宽城| 福鼎市| 湘潭市| 灌南县| 阿城市| 津市市| 苏尼特左旗| 班玛县| 铜鼓县|