ListBox不显示任何项目

时间:2013-12-20 22:26:50

标签: c# wpf listbox

我创建了一个带有自定义ListBox模板的ListBoxItem,绑定了所有内容并且有效。当我还在处理我的项目时。我运行了程序,ListBox不再显示项目了。这是我的代码:

这是ListBox,不显示任何项目:

<ListBox 
   x:Name="LB_SongList" 
   HorizontalAlignment="Left" 
   Height="498" 
   Margin="0,30,0,0" 
   VerticalAlignment="Top" 
   Width="319" 
   Background="{x:Null}" 
   BorderBrush="{x:Null}" 
   Drop="LB_SongList_Drop" 
   PreviewMouseMove="LB_SongList_PreviewMouseMove" 
   PreviewMouseDoubleClick="LB_SongList_PreviewMouseDoubleClick"
   SelectionChanged="LB_SongList_SelectionChanged" 
   AllowDrop="True" 
   ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
   ScrollViewer.VerticalScrollBarVisibility="Visible" 
   SelectionMode="Multiple"
   ItemTemplate="{DynamicResource SongTemplate}"/>

这是我的ListBoxItem模板:

    <DataTemplate x:Key="SongTemplate">
        <Grid Width="302" Height="35">
            <Label Content="{Binding SongName}" HorizontalAlignment="Stretch" Margin="4" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Padding="2,0,0,0" VerticalContentAlignment="Center"/>
            <Border BorderBrush="#B26A6A6A" BorderThickness="4" HorizontalAlignment="Stretch" Height="35" VerticalAlignment="Top" Width="Auto">
                <Border.Style>
                    <Style>
                        <Style.Triggers>
                            <DataTrigger 
                                Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"
                                Value="False">
                                <Setter 
                                    Property="Border.Visibility"
                                    Value="Collapsed"
                                />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Border.Style>
            </Border>
        </Grid>
    </DataTemplate>

代码:

public partial class MenuHolder : UserControl
{
    private List<string> List_SongList;

    public List<string> L_SongList 
    { 
       get { return List_SongList; } 
       set 
       { 
          _File.ListToObservableCollection_Song(value, O_SongList); 
          List_SongList = value; 
       } 
    }

    public List<string> L_PlayLists 
    { 
       get 
       { 
          Settings.Default.Save(); 
          return Settings.Default.L_PlayLists; 
       } 
       set 
       { 
          Settings.Default.L_PlayLists = value; 
          Settings.Default.Save(); 
       } 
    }

    public ObservableCollection<Song> O_SongList = new ObservableCollection<Song>();
    public ObservableCollection<string> O_PlayList = new ObservableCollection<string>();

    public MenuHolder()
    {
        InitializeComponent();

        LB_SongList.ItemsSource = O_SongList;
        LB_PlayList.ItemsSource = O_PlayList;

        List<string> temp = new List<string>();
        temp.Add("TestSong");
        L_SongList = temp;

    }
}

public class Song : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    string _songName;
    string _songLengh;

    public Song(){}
    public Song(String _name){ SongName = _name; }
    public Song(String _name, String _lengh) { SongName = _name; SongLengh = _lengh; }

    public string SongName
    {
        get { return _songName; }
        set { _songName = value; RaisePropertyChanged("SongName"); }
    }

    public string SongLengh
    {
        get { return _songLengh; }
        set { _songLengh = value; RaisePropertyChanged("SongLengh"); }
    }

    private void RaisePropertyChanged(string propertyName)
    {
        // take a copy to prevent thread issues
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

ListToObservableCollection_Song

    public void ListToObservableCollection_Song(List<string> _list, ObservableCollection<Music_Player.Menus.MainMenuObjects.Song> _collection)
    {
        _collection.Clear();
        foreach (string _path in _list)
        {
            _collection.Add(new Menus.MainMenuObjects.Song(GetSongNameFromPath(_path)));
        }
    }

最糟糕的是它在我的程序的旧版本之前和之前工作它仍在工作。还在想为什么会这样做。

0 个答案:

没有答案