首页 > 解决方案 > 有时无法在列表框中选择项目c#

问题描述

在我的 xaml 中,我将 a 绑定ObservableCollection<City> Cities到它

而且SelectedItemSelectedCity

有时当鼠标悬停在某个项目上时,我无法选择

我的列表框看起来像这样:

<ListBox ItemsSource="{Binding Model.Cities}" SelectedItem="{Binding Model.SelectedCity}" HorizontalAlignment="Left" Height="468" Margin="10,136,0,0" VerticalAlignment="Top" Width="877">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Margin="0,2">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="100" />
                        <ColumnDefinition Width="150" />

                    </Grid.ColumnDefinitions>

                    <TextBlock Grid.Column="0" Text="{Binding Name}" />
                    <TextBlock Grid.Column="1" Text="{Binding Plz}" />
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

在我的模型中,代码如下所示:

 class CitiesModel: MyObservableCollection<City>
{
    public ObservableCollection<City> Cities
    {
        get
        {
            return _cities;
        }
    }

    private ObservableCollection<City> _cities;


    private City _selectedCity;
    public City SelectedCity
    {
        get
        {
            return _selectedCity;
        }
        set
        {

            _selectedCity = value;
            RaisePropertyChanged("SelectedCity");

        }
    }

有人能解释一下,为什么我有时不能选择一个项目吗?

标签: wpflistboxselecteditem

解决方案


你的意思是一旦你选择了一个,你就不能选择另一个。

你的问题是,如果你有二传手。去掉它。

        if(_selectedCity != value)
        {

城市是一个对象。如果您将一个对象与另一个对象进行比较,那么除非您提供了 Equals 方法,否则它们将是相同类型的。

因此,一旦您选择了一个城市,那么任何其他城市都是平等的。


推荐阅读