博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF绑定各种数据源之xml数据源
阅读量:6212 次
发布时间:2019-06-21

本文共 2832 字,大约阅读时间需要 9 分钟。

一、WPF绑定各种数据源索引

Binding的基础可参考

 

二、WPF绑定各种数据源之xml数据源,此时的XML源写在界面了,当然也可以独立成文件。

<Window.Resources>
       
<Con:BackgroundConverter x:Key=
"BackgroundConverter"
/>
       
<XmlDataProvider x:Key=
"myPerson3"
>
           
<x:XData>
               
<PersonF xmlns=
""
>
                   
<person Name=
"Person1"
>
                       
<ID>1</ID>
                       
<Name>XiaoA</Name>
                       
<Age>49</Age>
                   
</person>
                   
<person Name=
"Person2"
>
                       
<ID>2</ID>
                       
<Name>XiaoB</Name>
                       
<Age>29</Age>
                   
</person>
                   
<person Name=
"Person3"
>
                       
<ID>3</ID>
                       
<Name>XiaoC</Name>
                       
<Age>103</Age>
                   
</person>
                   
<person Name=
"Person4"
>
                       
<ID>4</ID>
                       
<Name>XiaoD</Name>
                       
<Age>59</Age>
                   
</person>
               
</PersonF>
           
</x:XData>
       
</XmlDataProvider>
   
</Window.Resources>

  下面是绑定的代码。此时需要注意,原来用Path改成了XPath,因为这是XML源,并且ItemsSource 改成 ItemsSource="{Binding Source={StaticResource myPerson3},XPath=/PersonF/person}"

<ListView Height=
"262" 
Margin=
"0,32,56,0" 
ItemsSource=
"{Binding Source={StaticResource myPerson3},XPath=/PersonF/person}" 
VerticalAlignment=
"Top"  
Name=
"listView3" 
HorizontalAlignment=
"Right" 
Width=
"310"
>
      
<ListView.View>
          
<GridView>
              
<GridViewColumn Header=
"编号" 
DisplayMemberBinding=
"{Binding XPath=ID}"  
Width=
"100" 
/>
              
<GridViewColumn Header=
"姓名" 
DisplayMemberBinding=
"{Binding XPath=Name}" 
Width=
"100"
/>
              
<GridViewColumn Header=
"年龄" 
Width=
"100"
>
                  
<GridViewColumn.CellTemplate>
                      
<DataTemplate>
                          
<TextBlock Grid.Column=
"1" 
Text=
"{Binding XPath=Age}" 
Foreground=
"{Binding XPath=Age, Converter={StaticResource BackgroundConverter}}"
/>
                      
</DataTemplate>
                  
</GridViewColumn.CellTemplate>
              
</GridViewColumn>
          
</GridView>
      
</ListView.View>
  
</ListView>

  下面是值转换

public 
class 
BackgroundConverter : IValueConverter
   
{
       
#region IValueConverter Members
 
       
public 
object 
Convert(
object 
value, Type targetType,
object 
parameter, System.Globalization.CultureInfo culture)
       
{
           
Color color =
new 
Color();
           
int 
num =
int
.Parse(value.ToString());
           
if 
(num > 100)
               
color = Colors.Yellow;
           
else 
if 
(num < 50)
               
color = Colors.LightGreen;
           
else
               
color = Colors.LightPink;
           
return 
new 
SolidColorBrush(color);
       
}
 
       
public 
object 
ConvertBack(
object 
value, Type targetType,
object 
parameter, System.Globalization.CultureInfo culture)
       
{
           
throw 
new 
NotImplementedException();
       
}
 
       
#endregion
   
}

  效果图:

 

2.使用外部XML数据源,只需做如下修改

<Window.Resources>
       
<XmlDataProvider x:Key=
"myPerson3" 
Source=
"/Person.xml"
/>
  
</Window.Resources>

3.如果使用外部XML数据源,并且采用C#代码的形式,则如下:

XmlDocument doc =
new 
XmlDocument();
 
doc.Load(
@"http://www.cnblogs.com/XMLFile1.xml"
);
 
XmlDataProvider provider =
new 
XmlDataProvider();
 
provider.Document = doc;
 
provider.XPath =
@"/PersonF/person"
;
 
 
listView3.DataContext = provider;
 
listView3.SetBinding(ListView.ItemsSourceProperty,
new 
Binding());

 当然也可以使用XMLDataProvider的Source属性,此时只需做如下修改:

XmlDataProvider provider =
new 
XmlDataProvider();
provider.Source =
new 
Uri(
@"F:\\XMLFile1.xml"
);
provider.XPath =
@"/PersonF/person"
;

其他不变。 

  

作者:

出处:
欢迎任何形式的转载,未经作者同意,请保留此段声明!

转载于:https://www.cnblogs.com/nepulgh/p/7128857.html

你可能感兴趣的文章
Centos 6 tesseract安装
查看>>
Java程序设计第一次作业
查看>>
流量异常监控
查看>>
javascript 中的location.href 并不是立即执行的,是在所在function 执行完之后执行的。...
查看>>
Learning JavaScript(0)_Concepts
查看>>
11. Django及数据库环境搭建
查看>>
28. Python编写自动化测试用例
查看>>
Java-break,continue,return用法
查看>>
jQuery Json数据格式排版高亮插件json-viewer.js的使用
查看>>
svn冲突的解决办法
查看>>
关于 Xcode bitcode 错误
查看>>
消息队列的四大典型使用场景
查看>>
JVM调优
查看>>
二阶段冲刺第四天
查看>>
Python爬虫知识点一
查看>>
UIView and UIWindow
查看>>
页面自动刷新
查看>>
c语言可变参数相关的宏
查看>>
八、oracle 分页
查看>>
TSC条码打印机C#例程(tsclib.dll调用) 【转】
查看>>