码迷,mamicode.com
首页 > Windows程序 > 详细

利用Powershell快速对WPF的ListBox 数据源的绑定

时间:2015-07-06 23:04:13      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

有时候,我们在封闭的环境中做开发工作,并没有那么多便捷的开发工具,只能利用当前系统自带的基本工具做开发,

比如利用强大的framework,而powershell就是很好的开发工具,在不安装visual studio的情况下,就能实现大部分功能。

下面就用一个简单的例子来实现WPF中ListBox 数据源的绑定

1.关于dataset,我就不做多解释了,简单来说,就是一个或多个DataTable 对象的集合。

  用powershell来实现的话,是简单不过的事情了。

#Create Table object

$table = New-Object System.Data.Datatable "newtable"

$dataset = New-Object System.Data.DataSet

#Define Columns

$col1 = New-Object system.Data.DataColumn "ContactName",([string])

$col2 = New-Object system.Data.DataColumn "Address",([string])

$col3 = New-Object system.Data.DataColumn "City",([string])

$col4 = New-Object system.Data.DataColumn "Country",([string])

#Add the Columns

$table.columns.add($col1)

$table.columns.add($col2)

$table.columns.add($col3)

$table.columns.add($col4)

#Create a row

foreach($k in 1..5){

$row = $table.NewRow()

$row.ContactName = "ContactName$k"

$row.Address = "Address$k"

$row.City = "City$k"

$row.Country = "Country$k"

$table.Rows.Add($row)

}

$dataset.merge($table)

这样dataset对象就生成好了

2.新建MainWindow.xaml文件,就简单放一个UI元素ListBox和控件模板。

   注意ItemsSource就是绑定dataset的一个newtable表。

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Window" Title="DataGridWindow" Height="300" Width="400" >

<Window.Resources>
<DataTemplate x:Key="listBoxTemplate">
<StackPanel Margin="3">
<DockPanel >
<TextBlock FontWeight="Bold" Text="Name:"
DockPanel.Dock="Left"
Margin="5,0,10,0"/>
<TextBlock Text=" " />
<TextBlock Text="{Binding ContactName}" Foreground="Green" FontWeight="Bold" />
</DockPanel>

<DockPanel >
<TextBlock FontWeight="Bold" Text="Address:" Foreground ="DarkOrange"
DockPanel.Dock="Left"
Margin="5,0,5,0"/>
<TextBlock Text="{Binding Address}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding City}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Country}" />
</DockPanel>

</StackPanel>
</DataTemplate>
</Window.Resources>

<Grid>

<ListBox Margin="17,8,15,26" Name="listBox1"
ItemsSource="{Binding newtable}" ItemTemplate="{StaticResource listBoxTemplate}" />

</Grid>

</Window>

3.接着就开始整合一下,主要是给listbox的上下文赋值。

  $xaml = [xml](Get-Content MainWindow.xaml)

$reader=(New-Object System.Xml.XmlNodeReader $xaml)

$Window=[Windows.Markup.XamlReader]::Load( $reader )

$listBox1 = $Window.FindName("listBox1")

$listBox1.DataContext = $dataset 

$Window.Showdialog() | Out-Null

好了,这样就应该可以了。

不过在运行之前,先判断一下是不是在sta mode下运行的,因为运行GUI是要在sta模式下运行的

     $host.Runspace.ApartmentState -eq ‘STA‘

如果不是的话,加上powershell -sta就可以了。

我是这么运行的,新建start.bat,里面的内容powershell -sta。

双击之后,然后如下操作

技术分享

 得到如下结果

 技术分享

 

 

利用Powershell快速对WPF的ListBox 数据源的绑定

标签:

原文地址:http://www.cnblogs.com/torrysen/p/4621190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!