【发布时间】:2016-11-09 22:44:40
【问题描述】:
我在这里找到了许多很棒的主题,但似乎无法找到我的答案。我正在使用 Visual Studio 制作一个 GUI,并将 XAML 复制/粘贴到 PowerShell 中。我知道我应该在 c# 中执行此操作,但由于我的知识还不存在,它对我来说是纯 PowerShell。
所以我已经制作了我的 GUI,但我似乎无法填充我的数据字段。做文本框之类的其他事情是可以解决的,但我似乎无法让这个列表视图/数据网格填充值。
此时,与 Azure 的连接已被删除,直到我可以解决将项目添加到列表框中的问题。
XAML 来绘制我的表单
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[xml]$XAML = @'
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Azure"
Title="Azure Accelerator" Height="300" Width="315">
<Grid Margin="0,0,174,0">
<Image Name="image" HorizontalAlignment="Left" Height="46" Margin="10,10,-97,0" VerticalAlignment="Top" Width="210" Source="C:\Users\stephen\Dropbox\My Code\Powershell\WPF\mslogo.png"/>
<TextBlock Name="textBlock" HorizontalAlignment="Left" Height="21" Margin="10,61,-140,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="248" Text="VM PickerUse"/>
<Button Name="btnOK" Content="OK" HorizontalAlignment="Left" Margin="217,268,-160,0" VerticalAlignment="Top" Width="75" Height="23"/>
<Button Name="btnExit" Content="Cancel" HorizontalAlignment="Left" Margin="12,268,0,0" VerticalAlignment="Top" Width="75" Height="23"/>
<ListView Name="listView" HorizontalAlignment="Left" Height="108" Margin="12,107,-140,0" VerticalAlignment="Top" Width="246">
<ListView.View>
<GridView>
<GridViewColumn Header="VMName" DisplayMemberBinding ="{Binding VMName}"/>
<GridViewColumn Header="Status" DisplayMemberBinding ="{Binding Status}"/>
<GridViewColumn Header="Other"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
'@
将 XAML 加载到内存/创建对象
#Read XAML
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
try{$Form=[Windows.Markup.XamlReader]::Load( $reader )}
catch{Write-Host "Unable to load Windows.Markup.XamlReader. Some possible causes for this problem include: .NET Framework is missing PowerShell must be launched with PowerShell -sta, invalid XAML code was encountered."}
#===========================================================================
# Store Form Objects In PowerShell
#===========================================================================
$xaml.SelectNodes("//*[@Name]") | %{Set-Variable -Name "VMpick$($_.Name)" -Value $Form.FindName($_.Name)}
我可能需要帮助的地方
#Try to setup a dummy entry
$vmpicklistView.items.Add( @{'VMName'='1';Status="AccessDenied";'Other'='1'})
#===========================================================================
# Shows the form
#===========================================================================
$Form.ShowDialog() | out-null
正如您从我的屏幕截图中看到的那样,当我向列添加绑定时(我认为这会实例化列并让我为它们插入值……不)当我尝试添加时它们不再更新一个新项目。但是,我没有应用绑定的“其他”列至少显示了一些输入,但它错误地列出了 Collection,就好像它试图显示整个哈希表一样。
那么,我的最后一个问题是,如何将项目添加到列表视图?
【问题讨论】:
标签: c# wpf xaml powershell