none
WPF listbox создание нового элемента RRS feed

  • Вопрос

  • в WPF я новичок решил сделать listbox с картинками и текстом нашел следующий код 

     

    <ListBoxItem Background="LightCoral" Foreground="Red"
     FontFamily="Verdana" FontSize="12" FontWeight="Bold">
     <StackPanel Orientation="Horizontal">
     <Image Source="coffie.jpg" Height="30"></Image>
     <TextBlock Text="Coffie"></TextBlock>
     </StackPanel>
    </ListBoxItem>
    

     

     

    как это можно сделать программно, Ну в смысле не от редактора XAML ?

    • Изменено NIKkakNIK 9 декабря 2010 г. 19:38 рд
    9 декабря 2010 г. 19:38

Ответы

  •       ListBoxItem lbi = new ListBoxItem()
          {
            Background = Brushes.LightCoral,
            Foreground = Brushes.Red,
            FontFamily = new FontFamily("Verdana"),
            FontSize = 12,
            FontWeight = FontWeights.Bold
          };
    
          StackPanel sp = new StackPanel() { Orientation = Orientation.Horizontal };
    
          Image img = new Image();
          img.Source = new BitmapImage(new Uri("coffie.jpg", UriKind.Relative));
          
          TextBlock tx = new TextBlock() { Text = "Coffie" };
    
          sp.Children.Add(img);
          sp.Children.Add(tx);
          lbi.Content = sp;
    
          blb.Items.Add(lbi);
    

    Для связи [mail]
    • Предложено в качестве ответа PashaPash 10 декабря 2010 г. 22:29
    • Помечено в качестве ответа NIKkakNIK 10 декабря 2010 г. 23:46
    10 декабря 2010 г. 6:12

Все ответы

  •       ListBoxItem lbi = new ListBoxItem()
          {
            Background = Brushes.LightCoral,
            Foreground = Brushes.Red,
            FontFamily = new FontFamily("Verdana"),
            FontSize = 12,
            FontWeight = FontWeights.Bold
          };
    
          StackPanel sp = new StackPanel() { Orientation = Orientation.Horizontal };
    
          Image img = new Image();
          img.Source = new BitmapImage(new Uri("coffie.jpg", UriKind.Relative));
          
          TextBlock tx = new TextBlock() { Text = "Coffie" };
    
          sp.Children.Add(img);
          sp.Children.Add(tx);
          lbi.Content = sp;
    
          blb.Items.Add(lbi);
    

    Для связи [mail]
    • Предложено в качестве ответа PashaPash 10 декабря 2010 г. 22:29
    • Помечено в качестве ответа NIKkakNIK 10 декабря 2010 г. 23:46
    10 декабря 2010 г. 6:12
  • А можно ли извлечь из элемента листбокса что там написано, ну в смысле TextBlock tx = new TextBlock() { Text = "Coffie" }; ????

    10 декабря 2010 г. 19:49
  • Конечно можно, все делается в обратном направлении:

          foreach (ListBoxItem lbi in myListBox.Items)
          {
            // С проверками
            //
            //StackPanel sp = lbi.Content as StackPanel;
            //if (sp != null)
            //{
            //  if (sp.Children.Count > 1)
            //  {
            //    TextBlock tb = sp.Children[1] as TextBlock;
            //    if (tb != null)
            //    {
            //      MessageBox.Show(tb.Text);
            //    }
            //  }
            //}
    
            // Без проверки, если точно уверены в содержимом
            MessageBox.Show(((TextBlock)(((StackPanel)lbi.Content).Children[1])).Text);
          }
    


    Для связи [mail]
    10 декабря 2010 г. 21:09