整理:WPF中XmlDataProvider的用法總結
一、目的:瞭解XmlDataProvider中繫結資料的方法
二、繫結方式主要有三種:
1、Xaml資源中內建:
<!--XPath指定一組節點--> <XmlDataProvider x:Key="ds1" XPath="XUnits"> <x:XData> <XUnits xmlns=""> <FFmpegCommandTextParameter Text="設定紀錄時間" ToolTip="hh:mm:ss[.xxx]格式的記錄時間也支援" Command="-t" Parameter="2001"/> <FFmpegCommandTextParameter Text="搜尋到指定的時間" ToolTip="[-]hh:mm:ss[.xxx]的格式也支援" Command="-ss" Parameter="2001"/> <FFmpegCommandTextParameter Text="設定標題" ToolTip="設定標題" Command="-title" Parameter="2001"/> <FFmpegCommandTextParameter Text="設定作者" ToolTip="設定作者" Command="-author" Parameter="2001"/> <FFmpegCommandTextParameter Text="設定版權" ToolTip="設定版權" Command="-copyright" Parameter="2001"/> <FFmpegCommandTextParameter Text="設定評論" ToolTip="設定評論" Command="-comment" Parameter="2001"/> <FFmpegCommandCheckParameter Text="啟用高質量設定" ToolTip="啟用高質量設定" Command="-hq" IsChecked="false"/> <FFmpegCommandTextParameter Text="設定目標檔案型別" ToolTip="設定目標檔案型別" Command="-author" Parameter="2001"/> <FFmpegCommandCheckParameter Text="啟用高質量設定" ToolTip="啟用高質量設定" Command="-hq" IsChecked="false"/> </XUnits> </x:XData> </XmlDataProvider>
2、Source屬性繫結外部xml檔案
<XmlDataProvider Source="myfile.xml" x:Key="mykey" XPath="/Root"/>
3、繫結程式碼XmlDocument例項
<XmlDataProvider x:Key="InventoryData" XPath="Inventory/Books" Document="{Binding MyDocument}"/>
三、繫結到控制元件並設定模板
1、繫結樹形結構
<!--年級模版-->
<HierarchicalDataTemplate DataType="Grade" ItemsSource="{Binding XPath=Class}">
<TextBlock Text="{Binding [email protected]}"></TextBlock>
</HierarchicalDataTemplate>
<!--班級模版-->
<HierarchicalDataTemplate DataType="Class" ItemsSource="{Binding XPath=Group}">
<RadioButton Content="{Binding [email protected]}"></RadioButton>
</HierarchicalDataTemplate>
<!--分組模版-->
<HierarchicalDataTemplate DataType="Group">
<CheckBox Content="{Binding [email protected]}"></CheckBox>
</HierarchicalDataTemplate>
<!--資料模版-->
<XmlDataProvider x:Key="ds" XPath="Data/Grade">
<x:XData>
<Data xmlns="">
<Grade Name="一年級">
<Class Name="甲班">
<Group Name="A組"></Group>
<Group Name="B組"></Group>
<Group Name="C組"></Group>
</Class>
<Class Name="乙班">
<Group Name="A組"></Group>
<Group Name="B組"></Group>
<Group Name="C組"></Group>
</Class>
</Grade>
<Grade Name="二年級">
<Class Name="丙班">
<Group Name="A組"></Group>
<Group Name="B組"></Group>
<Group Name="C組"></Group>
</Class>
<Class Name="丁班">
<Group Name="A組"></Group>
<Group Name="B組"></Group>
<Group Name="C組"></Group>
</Class>
</Grade>
</Data>
</x:XData>
</XmlDataProvider>
<Menu ItemsSource="{Binding Source={StaticResource ds}}"></Menu>
<TreeView ItemsSource="{Binding Source={StaticResource ds}}" Margin="5"></TreeView>
2、繫結到ListBox、Comboboxl並設定模板
<!--Xml中的元素名可以作為DataType-->
<DataTemplate DataType="XUnit">
<Grid>
<StackPanel Orientation="Horizontal">
<Grid>
<Rectangle Fill="Red" Width="{Binding [email protected]}" Stroke="Yellow"></Rectangle>
<TextBlock Text="{Binding [email protected]}"/>
</Grid>
<TextBlock Text="{Binding [email protected]}"></TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
<!--XPath指定一組節點-->
<XmlDataProvider x:Key="ds1" XPath="XUnits/XUnit">
<x:XData>
<XUnits xmlns="">
<XUnit Price="100" Year="2001"></XUnit>
<XUnit Price="120" Year="2002"></XUnit>
<XUnit Price="140" Year="2003"></XUnit>
<XUnit Price="180" Year="2004"></XUnit>
<XUnit Price="150" Year="2005"></XUnit>
<XUnit Price="200" Year="2006"></XUnit>
</XUnits>
</x:XData>
</XmlDataProvider>
四、設定XPath
1、直接設定型別的XPath對應的屬性
<DataTemplate DataType="FFmpegCommandTextParameter">
<Grid Width="{Binding RelativeSource={RelativeSource AncestorType=ListBox},Path=ActualWidth}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding [email protected]}" ToolTip="{Binding [email protected]}"/>
<TextBox Text="{Binding [email protected]}" ToolTip="{Binding [email protected]}" Grid.Column="1"/>
</Grid>
</Grid>
</DataTemplate>
如:繫結FFmpegCommandTextParameter節點下面Text屬性,注意:@轉義字元必須新增
2、在 XmlDataProvider中設定根節點XPath
<XmlDataProvider Source="myfile.xml" x:Key="myfile" XPath="/Root"/>
3、篩選
<ListBox DataContext="{Binding Source={StaticResource SourceKey},XPath=/Root/Item[@ID/=1]}"/>
<ListBox DataContext="{Binding Source={StaticResource SourceKey},XPath=/Root/Item[4]}"/>
<ListBox DataContext="{Binding Source={StaticResource SourceKey},XPath=/Root/Item[@ID>2]}" />
<ListBox.ItemsSource>
<Binding Source="{StaticResource InventoryData}"
XPath="*[@Stock='out'] | *[@Number>=8 or @Number=3]"/>
</ListBox.ItemsSource>
4、匹配所有型別
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<ListBox.ItemsSource>
<Binding Source="{StaticResource ds1}" XPath="*"/>
</ListBox.ItemsSource>
</ListBox>
五、資料同步到XML
XmlDataProvider xml = this.Resources["xmlData"] as XmlDataProvider;
xml.Document.Save("D:/temp.xml");
部分程式碼來源於網路
相關推薦
整理:WPF中XmlDataProvider的用法總結
一、目的:瞭解XmlDataProvider中繫結資料的方法 二、繫結方式主要有三種: 1、Xaml資源中內建: <!--XPath指定一組節點--> <XmlDataProvider x:Key="ds1" XPa
轉:ORACLE 中ROWNUM用法總結!
oracle 分頁查詢語句:select * from (select u.*,rownum r from (select * from userifno) u where rownum<大值) where r>小值 問題: ①為什麼一定要用 u.*? 原因:Or
整理:WPF中應用附加事件製作可以繫結命令的其他事件
目的:應用附加事件的方式定義可以繫結的事件,如MouseLeftButton、MouseDouble等等 一、定義屬於Control的附加事件ControlAttachEvent類 /// <summary> 附加事件 </summary>
整理:CString類的完美總結&&CString 成員函式用法大全&&string 與 CString 轉化&& 和的區別
CString類的完美總結: ①、CString 類物件的初始化: CString str; CString str1(_T("abc")); CString str2 = _T("defg"); TCHAR szBuf[] = _T("kkk"); CStri
總結:WPF中模板需要繫結父級別的ViewModel該如何處理
<ListBox ItemsSource="{Binding ClassCollection}"> <ListBox.ItemContainerStyle>
c/c++中const用法總結
沒有 pan 分配 值類型 變量初始化 _id 多少 部分 參數 1、修飾常量時: const int temp1; //temp1為常量,不可變 int const temp2; //temp2為常量,不可變 2、修飾指針時: 主要看const在*的前後,
Git:git-checkout的用法總結(2)
參考 正文 nsa dex block -o onf script 還需要 原帖收藏於IT老兵驛站,傳遞一個IT老兵在雕零前的光和氧。 前言 結合前一篇文章,再認真總結一下git-checkout的用法,因為可能一次總結到不了位,那麽就不怕啰嗦,不怕重復,多總結幾次,這樣可
第十篇:javaScript中的JSON總結
參考網站:json中國,MDN json 一、必知基礎 JSON 是JavaScript物件文字元號的一個子集,它可以自如的在JavaScript中使用. 看下這個物件: var myJSONObject = { "b
C++中STL用法總結【轉】
(轉自:https://blog.csdn.net/piaoxuezhong/article/details/54348787?utm_source=blogxgwz8) 1.1 什麼是STL? STL(Standard Template Library),即標準模板庫,是一個具有工業強度的
Pandas中Series用法總結
Series:帶標籤的陣列 本文對Pandas包中的一維資料型別Series特點及用法進行了總結歸納。 2.1 如何建立Sereis #匯入Pandas包 import pandas as pd #建立Series #1.1.1 通過列表List listSer=pd.Se
Numpy中Array用法總結
Numpy中array(陣列) Numpy主要物件是齊次多維陣列,由正整數元組索引,Numpy中維度稱為軸(axis),陣列的維數稱為秩(rank)。 可以參考:Numpy快速入門 1.1 建立陣列 常規方法建立陣列 import numpy as np #一維陣列
Pandas中DataFrame用法總結
DataFrame:類似於表的資料結構 本文對Pandas包中二維(多維)資料結構DataFrame的特點和用法進行了總結歸納。 可以參考:pandas用法速覽 3.1 增加資料 3.1.1 建立資料框Object Creation import pandas as pd
oracle資料庫總結(七)--ORACLE 中ROWNUM用法總結! (轉)
來自:http://www.cnblogs.com/chinhr/archive/2007/09/30/911685.html ORACLE 中ROWNUM用法總結! 對於 Oracle 的 rownum 問題,很多資料都說不支援>,>=,=,betwe
C++中CONST用法總結
1、修飾常量時: ? 1 2 const int temp1; //temp1為常量,不可變 int const temp2; //temp2為常量,不可變 2、修飾指標時: 主要看const在*的前後,
git在工作中的用法總結-環境安裝篇
使用git有很長一段時間了 ,平時用到的時候都是直接google,經常用到的一些也記錄在筆記中,但有時候筆記太多,實在是太亂了(其實是我太懶~ 哈?),找都要半天的時候還不如直接google,今天有空索性將以前的筆記整理一下發在部落格中,便於今後檢視,關於git的使用,這裡我打算分開寫,分為環境安裝篇和
git在工作中的用法總結-使用篇
上一篇介紹了git的環境安裝配置,本篇對git在工作中常用的用法進行總結,已滿足大部分的日常工作需求,對於其他的一些git命令用法在今後使用到時我也會更新上來,文中如有錯誤,歡迎大家指出來,謝謝~ 一、git本地基礎用法 1、建立程式碼倉庫 git init 2、加入所有目錄到倉庫 git a
ORACLE 中ROWNUM用法總結!
對於 Oracle 的 rownum 問題,很多資料都說不支援>,>=,=,between...and,只能用以上符號(<、<=、!=),並非說用>,& gt;=,=,between..and 時會提示SQL語法錯誤,而是經常是查不出一條
java中this用法總結
1,當局部變數和成員變數重名的時候,在方法中使用this表示成員變數以示區分。 class Demo{ String str = "這是成員變數"; void fun(String str){ System.out.println(str);
checkbox在vue中的用法總結
前言 關於checkbox多選框是再常見不過的了,幾乎很多地方都會用到,這兩天在使用vue框架時需要用到checkbox多選功能,實在著實讓我頭疼,vue和原生checkbox用法不太一樣, 之前對於vue中用到過的checkbox也只是別人寫好的元件,這次在自己實現時走了很多坑,特意寫這篇文章記錄下來,給後
Spring中@Async用法總結
引言: 在Java應用中,絕大多數情況下都是通過同步的方式來實現互動處理的;但是在處理與第三方系統互動的時候,容易造成響應遲緩的情況,之前大部分都是使用多執行緒來完成此類任務,其實,在Spring 3.x之後,就已經內建了@Async來完美解決這個問題,本文將完成介紹@As