将导入的文件绑定到ListView

时间:2015-11-25 13:48:01

标签: c# wpf listview bind

我正在尝试将我的班级列表绑定到ListView。我尝试了很多问题。 有我的c#Code女巫如何定义:

public MainWindow()
{
     InitializeComponent();
     timer.Interval = TimeSpan.FromSeconds(1); // L’intervalle entre chaque tick du timer sera d’une seconde
     timer.Tick += new EventHandler(timer_Tick); // A chaque tick, on déclenche l’évènement timer_Tick
     MyMP3LIST = new List<ListGrid>();
     ListM.DataContext = MyMP3LIST; // ListM = ListView name
     // I've tried : ListM.ItemSource = MyMP3LIST;
}

尝试绑定时:

ListGrid l = new ListGrid(); // My Class
l.IconUri = imagemp3.Source;
l.Title = Ftitle;
l.Length = duration;
l.Album = Falbum;
l.Composer = Fcomposer;
l.Path = openFileDialog1.FileName;
MyMP3LIST.Add(l);

我的XAML:

<ListView x:Name="ListM" Width="Auto" ItemsSource="{Binding MyMP3LIST}"
   Margin="-3,-0.877,-4,-15.925" SelectionChanged="ListM_SelectionChanged">

只有第一个导入的文件显示在ListView

2 个答案:

答案 0 :(得分:0)

填充MyMP3LIST后更改此内容:

ListM.DataContext = MyMP3LIST;

对此:

this.DataContext = MyMP3LIST;

并且还改变了这个:

<ListView x:Name="ListM" Width="Auto" ItemsSource="{Binding MyMP3LIST}" ../>

对此:

<ListView x:Name="ListM" Width="Auto" ItemsSource="{Binding}" .../>

同样在ListView您需要ItemTemplate来显示数据。例如:

<ListView x:Name="ListM" Width="Auto" ItemsSource="{Binding}" ...>
   <ListView.ItemTemplate>
      <DataTemplate>
        <StackPanel>
          <TextBlock Text="{Binding Title}" />     
          <TextBlock Text="{Binding Album}" />    
          ... 
        </StackPanel>
      </DataTemplate>
   </ListView.ItemTemplate>
<ListView>

修改:根据您的评论,您说要添加OpenFileDialog项,并且想要更新ListViewMyMP3LIST应该是ObservableCollection

ObservableCollection<ListGrid> MyMP3LIST = new ObservableCollection<ListGrid>();

答案 1 :(得分:-1)

很抱歉双重答案,但评论不允许代码。 这只是一个示例,所以我不确定所有属性是否都是准确的,但它应该是这样的:

        <ListView Grid.Row="0" Grid.Column="0" ItemsSource="{Binding Path=YourCollection, Mode=OneWay}"
              SelectedItem="{Binding Path=YourSelectedItem, Mode=TwoWay}"
             Margin="0" 
               >
        <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <WrapPanel>
                            <TextBlock Text="{Binding Path=FieldName1}"  />
                            <TextBlock Text="{Binding Path=FieldName2}" />
                        </WrapPanel>
                        <WrapPanel>
                            <TextBlock Text="{Binding Path=FieldName3}"  />
                            <TextBlock Text="{Binding Path=FieldName4}" />
                        </WrapPanel>
                    </StackPanel>
                </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

可以使用您喜欢的任何类型的WPF控件来定义项目模板。