2009-04-14 6 views
0

アイテムのObservableCollectionにバインドされたListViewコントロールがあり、プロパティデータにバインドされたカラムを持つGridViewにそのビューを設定しました。物事はうまくいくようですが、ソースプロパティのデータはまったくレンダリングされません。ここでSCANDATA構造体です:ListViewアイテムがGridViewカラムにレンダリングされていない

struct ScanData 
{ 
    public ushort Port; 
    public bool? Status; 
    public string ServiceName; 
} 

XAML:

<ListView IsSynchronizedWithCurrentItem="True" Width="Auto" Name="_resultsListView" ItemsSource="{Binding}" Height="138"> 
    <ListView.View> 
     <GridView ScrollViewer.IsDeferredScrollingEnabled="True"> 
      <GridViewColumn Header="Port" Width="50" DisplayMemberBinding="{Binding Path=Port}"/> 
      <GridViewColumn Header="Status" DisplayMemberBinding="{Binding Path=Status}"/> 
      <GridViewColumn Header="Service" Width="231" DisplayMemberBinding="{Binding Path=ServiceName}"/> 
    </GridView> 
    </ListView.View> 
</ListView> 

(とにかく最も関連部品、)分離コード:

public partial class AddServerDialog 
{ 
    PortScanner _scanner; 
    ObservableCollection<ScanData> _resultList; 
    Brush _defaultPortTextBorderBrush; 

    public AddServerDialog() 
    { 
     this.InitializeComponent(); 
     _resultList = new ObservableCollection<ScanData>(); 
     _resultsListView.DataContext = _resultList; 
    } 

    // ... 

    private void _addScanButton_Click(object sender, RoutedEventArgs e) 
    { 
     _resultList.Add(_scanner.CreateScan(ushort.Parse(_portText.Text))); 
    } 
} 

私は火に_addScanButton_Clickを引き起こしボタンをクリックすると、 ListViewをレンダリングしただけでアイテムが追加されていることがわかります(たとえば、行は選択可能です)が、3つのカラムには何も表示されません。 DataContext内のScanData項目はすべてPortプロパティが設定されているため、「Port」列に数値を表示しないでください。他の2つのプロパティは実行時にnullなので、私はそれらを見ることは期待していません。

答えて

3

ScanDataのデータは、フィールドではなくプロパティでなければなりません。

struct ScanData 
{ 
    public ushort Port {get;set;} 
    public bool? Status{get;set;} 
    public string ServiceName{get;set;} 
}