2014-08-19 3 views
0

У меня проблема с моим списком. Если я хочу изменить переменные в списке, я получил ошибку, потому что переменная не является статической. Может ли кто-нибудь объяснить мне, как я могу сделать listBox1 объекту?wpf listbox со статической переменной

<ListBox i:Name="listBox1" ItemsSource="{Binding MyItems}" MaxWidth="683" PreviewMouseDown="listView_PreviewMouseDown" IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Left" Margin="0,452,0,0" Grid.Row="0" VerticalAlignment="Top" Width="Auto" SelectionChanged="listBox1_SelectionChanged" Height="Auto" > 
     <ListBoxItem> 
      <TextBlock Text="{Binding listboxwertextra}" /> 
     </ListBoxItem> 
    </ListBox> 

Мой класс maininformtation:

public class maininformation 
    { 
    public string listboxwertextra { get; set; } 
    } 

Funktion:

public static void reloadlistbox() 
    { 

      List<maininformation> items = new List<maininformation>(); 
       items.Add(new maininformation() { listboxwertextra = "hallo" }); 
      listBox1.ItemsSource = items; 
    } 
+0

* У меня ошибка, потому что переменная не является статичной * ... Я считаю, что вы ошибаетесь. Что именно говорит ошибка? * Может кто-нибудь объяснить мне, как я могу сделать listBox1 объекту? * ... зачем? Что вы на самом деле хотите достичь здесь? – Sheridan

+1

Статический метод не может иметь доступ к объекту списка. Вы хотите сделать this.listBox1.ItemsSource ... но statis не имеет этого, избавиться от статического в этом случае. – Maximus

+0

Ссылка на объект требуется для нестатического поля, метода или свойства 'listbox1', я хочу вызвать функцию из другого класса, и он всегда говорит мне, что «public void reloadlistbox()» должен быть статическим – lacura

ответ

1
var obj = new MyClass(); 
    obj.Method(this); 

    class MyClass() 
    { 
     public void Method(Window wind) 
     { 
      wind.YourNonStaticMethod(); 
     } 
    } 

Но почему вы не называть объект другого класса, делать все, что вы хотите, получить какой-то данных, если необходимо, а затем обновите свой список.

public void ReloadListbox() 
    { 
     var yourClass = new YourClass(); 
     listBox1.ItemsSource = yourClass.SendMeData(); 
    } 
+0

Спасибо, человек! Вот что я искал! – lacura

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