2011-01-14 2 views
2

Как вы добавляете подпозиции в ListView? Мне нужно генерировать все динамически, но каждый пример, который я нашел, использует XAML.Добавить SubItems в ListView без использования XAML

Non-WPF было так просто:

ListViewItem lvi = listview.items.add(wahtever); 
lvi. blah blah blah 

Как добавить подпункты в WPF без использования XAML?

+1

МОФ ListView не имеют 'подпункты', как старые WinForms делает. Это требует совершенно иного мышления. Я думал точно так, как ты сейчас. Какого черта со всем XAML? Выиграет гораздо больше вперед. Но теперь я не могу вернуться к winforms. WPF выигрывает в моей книге. Просто требуется немного времени, чтобы обдумать это, но когда вы это сделаете. Это потрясающе. –

+1

Да, я помню свои первые несколько месяцев с WPF ... моя облысение увеличилось ... Теперь любая платформа пользовательского интерфейса, о которой я думаю, хочу, чтобы у нее были привязки, темы, стили, триггеры, DataContexts, команды, прикрепленные свойства. Черт WinForms настолько хромой! : p –

ответ

-2

SubItem или ListItem ?? Easy:

myListbox.Items.Add(object); 

Вы можете добавить любой тип объекта в этой коллекции или конкретного объекта ListBoxItem, как этот:

this.List.Items.Add(new ListBoxItem{ Content = "Value to display"}); 
4

«WPF путь» должен был бы связать ваш ListView к коллекции который представляет данные, которые вы хотите отобразить. Затем добавьте объекты, содержащие данные в эту коллекцию. Вам почти никогда не придется иметь дело с добавлением ListViewItems в ваш список вручную, как вы планируете делать. Я мог бы придумать пример, но есть много потоков здесь на SO уже, что решить именно эту проблему:

  1. Add programmatically ListViewItem to Listview in WPF
  2. WPF ListView - how to add items programmatically?
+0

Мне нужна одна услуга. Как изменить цвет фона, добавив строки динамически, как указано выше? – Sandy

5

Как уже упоминалось, WPF не имеет подпункты как WinForms. Вместо этого вы используете свойства объекта, который подходит для ваших целей.

Для полноты здесь XAML отличается кодом.

XAML:

<UniformGrid Columns="2"> 
     <ListView Name="xamlListView"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="X Value" DisplayMemberBinding="{Binding X}"/> 
        <GridViewColumn Header="Y Value" DisplayMemberBinding="{Binding Y}"/> 
       </GridView> 
      </ListView.View> 
      <ListView.Items> 
       <PointCollection> 
        <Point X="10" Y="20"/> 
        <Point X="20" Y="30"/> 
       </PointCollection> 
      </ListView.Items> 
     </ListView> 
     <ListView Name="codeListView"/> 
    </UniformGrid> 

Код:

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     var view = new GridView(); 
     view.Columns.Add(new GridViewColumn { Header = "First Name", DisplayMemberBinding = new Binding("First") }); 
     view.Columns.Add(new GridViewColumn { Header = "Last Name", DisplayMemberBinding = new Binding("Last") }); 
     codeListView.View = view; 
     codeListView.Items.Add(new { First = "Bill", Last = "Smith" }); 
     codeListView.Items.Add(new { First = "Jane", Last = "Doe" }); 
    } 
+0

Большое вам спасибо. Это сделал трюк. Так теперь кажется, что со всем, что вы используете связывание даже через код? Интересные и разочаровывающие изменения, но я благодарю вас за вашу помощь, так как это очень ценится! – nitefrog

Смежные вопросы