我有一个列表框,其中填充了使用 Linq 的 SQLCE 数据库中的 3 个项目。出于某种原因,当我选择位于索引 1 的项目时,它会在列表框中突出显示,但不会触发选择更改。如果我选择任何其他项目(索引 0 或 2),则选择会正常触发。
有任何想法吗?
我已经检查了数据库中的项目,我看不出它有什么问题。
编辑:请求的代码
Xaml
<ListBox x:Name="lbxPlans" Grid.Row="5" Grid.ColumnSpan="2" Margin="12" ItemsSource="{Binding}" ItemTemplate="{DynamicResource PlanTemplate}" SelectionChanged="lbxPlans_SelectionChanged">
<DataTemplate x:Key="PlanTemplate">
<Grid Margin="0,3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock HorizontalAlignment="Left" Height="Auto" TextWrapping="Wrap" Text="Run No." VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Height="Auto" TextWrapping="Wrap" Text="{Binding RunNumber}" VerticalAlignment="Top" Grid.Column="1" Margin="6,0"/>
<TextBlock HorizontalAlignment="Left" Height="Auto" TextWrapping="Wrap" Text="Week Day:" VerticalAlignment="Top" Grid.Column="2"/>
<TextBlock HorizontalAlignment="Left" Height="Auto" TextWrapping="Wrap" Text="{Binding DayOfWeek}" VerticalAlignment="Top" Grid.Column="3" Margin="6,0"/>
<TextBlock HorizontalAlignment="Left" Height="Auto" TextWrapping="Wrap" Text="Week Number:" VerticalAlignment="Top" Grid.Column="4"/>
<TextBlock HorizontalAlignment="Left" Height="Auto" TextWrapping="Wrap" Text="{Binding WeekNumber}" VerticalAlignment="Top" Grid.Column="5" Margin="6,0"/>
<TextBlock HorizontalAlignment="Left" Height="Auto" TextWrapping="Wrap" Text="Desc:" VerticalAlignment="Top" Grid.Column="6"/>
<TextBlock HorizontalAlignment="Left" Height="Auto" TextWrapping="Wrap" Text="{Binding Description}" VerticalAlignment="Top" Grid.Column="7" Margin="6,0"/>
</Grid>
</DataTemplate>
和
private void GetProgrammes()
{
var pro = from p in Globals.Instance.Database.Programme
select p;
lbxPlans.DataContext = null;
lbxPlans.DataContext = pro;
}
private void lbxPlans_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
// TODO: Add event handler implementation here.
if (lbxPlans.SelectedIndex != 1)
{
MessageBox.Show("Selection Changed!");
}
}
编辑 2:根据请求,我不是pro
从数据库项目创建并将其分配给 Listbox DataContext,而是手动创建它们以消除数据库问题,但问题仍然存在。然后我通过创建一个List<string>
具有 3 个值的值并将其分配给列表框来运行一个实验。问题还在!那么这现在是列表框本身的问题吗?