2014-09-03 2 views
1

DataGrid이 소스 업데이트로 업데이트되는 PowerShell에서 UI를 만들려고하고 있으므로 ObservableCollection<PSObject>을 사용하고 있습니다. 그러나 ItemsSource으로 설정하면 DataGrid은 열을 생성하지 않습니다. 원래 배열을 사용하면됩니다. 다음 예는 다음과 같습니다ObservableCollection [PSObject]를 DataGrid의 ItemsSource로 사용할 수 있어야합니까?

Add-Type -AssemblyName PresentationCore 
Add-Type -AssemblyName PresentationFramework 
Add-Type -AssemblyName WindowsBase 

[xml]$xaml = @" 
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" 
     Height="500" 
     Width="600"> 
    <Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <DataGrid Grid.Row="0" 
       x:Name="dataGrid" 
       IsReadOnly="True" 
       Margin="6" /> 
    <DataGrid Grid.Row="1" 
       x:Name="observableDataGrid" 
       IsReadOnly="True" 
       Margin="6" /> 
    </Grid> 
</Window> 
"@ 

$reader = (New-Object System.Xml.XmlNodeReader $xaml) 
$Window = [Windows.Markup.XamlReader]::Load($reader) 

$dataGrid = $window.FindName("dataGrid") 
$observableDataGrid = $window.FindName("observableDataGrid") 

$results = Get-Process | Select-Object -Property ProcessName,Id,Handles,NPM,PM,VM,WS 

$results2 = New-Object -TypeName System.Collections.ObjectModel.ObservableCollection[PSObject] -ArgumentList @(,$results) 

$dataGrid.ItemsSource = $results 
$observableDataGrid.ItemsSource = $results2 

$Window.ShowDialog() | Out-Null 
+0

DataGrid에 대해 자동 생성 열을 true로 설정하고 그 도움이되는지 확인하십시오. 컬렉션에 요소가 있고 속성이 있는지 확인하고 필드가 작동하지 않을 수 있습니다. – pushpraj

답변

1

이 솔루션은 ObservableCollection<Object>ObservableCollection<PSObject>를 교체했다.

+0

답변에 질문하지 마십시오. 답변은 질문에 응답하기 위해 예약되어 있습니다. – Sheridan

+0

명세서를 삭제했습니다. – user2871239

+0

감사합니다. 아직도 이유를 알고 싶다면 대신에 질문하십시오. – Sheridan