【发布时间】:2009-04-14 17:37:13
【问题描述】:
我有一个 ListView 控件绑定到项目的 ObservableCollection,我已经将它的视图设置为 GridView,列绑定到属性数据。事情似乎没问题,但源属性中的数据根本没有被渲染。这是 ScanData 结构:
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”列中呈现数字吗?其他两个属性在运行时为 null,因此我不希望看到它们。
【问题讨论】: