0
我已經有一個ListView控件綁定到ObservableCollection的項目,並且我已經將它的視圖設置爲綁定到屬性Data的列的GridView。事情似乎沒有問題,但源屬性中的數據根本沒有被渲染。這裏的SCANDATA結構:在GridView列中沒有呈現的ListView項目
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中(例如,行是可選的),但是三列沒有顯示任何內容。 DataContext中的ScanData項目都設置了它們的Port屬性,所以它不應該是在「Port」列中呈現數字嗎?另外兩個屬性在運行時爲空,所以我不期望看到它們。