2015-05-03 2 views
0

СитуацияСписок не будут правильно отображаться WPF

Эй, ребята, за программу я разрабатываю У меня есть getRaces() метод:

public string getAllBaseRaces() 
     { 
      //string to hold a list of members 
      string strRaces = ""; 


      foreach (BaseRace s in races) 
      { 
       strRaces = strRaces + s.ToString() + "\n"; 
      } 


      return strRaces; 
     } 

Я пытаюсь заполнить список с моими getRaces () методы возвращаются, что является строкой, но когда я делаю это, я получаю что-то похожее на это:

this.DataContext = hillracing.getAllBaseRaces(); 

http://imgur.com/X1GdB52

Содержимое ListBox правильно, он отображает все мои параметры, как имя расы, идентификатор гонки, тип гонки, он также показывает все расы как это тоже означает, эта часть в порядке.

Проблема

Кажется, когда строка отображения, это неправильно показывая, как это хранение каждого символа в виде отдельного элемента списка, а не каждая раса будучи Seperate элемент списка.

Я смотрел онлайн, а решения были расплывчатыми и не совсем соответствовали моему сценарию.

Однако

когда я просто показать список в моем классе Hillracing (хранящего Race Объекты) я получаю что-то вроде этого:

this.DataContext = hillracing.Races; 

http://imgur.com/PD3KFMn

--Obviously , второй пример изображения лучше из двух, и это то, что я пытаюсь достичь с помощью метода getRaces(), но я не сделал этого, m временно использовать это, чтобы я мог обойти это, поэтому я не могу использовать это как постоянное решение, потому что у меня нет списка для всех типов членов, просто BaseMember, и у меня нет списка для всех рас. , только BaseRace.

Короче говоря, с getRaces(), как и в настоящее время, это не невероятно полезно, так как его вывод странный, я задавался вопросом, как добиться второго изображения с помощью метода getRaces().

XAML для списка

<Grid Background="#19535353" Margin="-5,-3,-4,-4"> 
        <Button Content="Create a Race" HorizontalAlignment="Left" Margin="56,163,0,0" VerticalAlignment="Top" Width="110" Height="110"/> 
        <Button x:Name="getRacesButton" Content="Get All Races" HorizontalAlignment="Left" Margin="56,30,0,0" VerticalAlignment="Top" Width="110" Height="110" Click="getRacesButton_Click_1"/> 
        <ContentControl Content="{Binding hillracing}" HorizontalAlignment="Left" Margin="326,273,0,0" VerticalAlignment="Top"/> 
        <ListBox HorizontalAlignment="Left" Height="406" Margin="287,30,0,0" VerticalAlignment="Top" Width="335" ItemsSource="{Binding hillracing}"/> 
        <Button Content="Join Selected Race" HorizontalAlignment="Left" Margin="287,441,0,0" VerticalAlignment="Top" Width="156" Height="42"/> 
        <Button Content="Edit Selected Race" HorizontalAlignment="Left" Margin="469,441,0,0" VerticalAlignment="Top" Width="153" Height="42" RenderTransformOrigin="0.34,0.548"/> 
       </Grid> 

Спасибо, ребята.

+0

Вы должны предоставить нам больше кода –

+0

На самом деле кода больше нет, мой метод работает, это просто результат, которого нет. Результат метода хорошо работает в TextBox, но не очень хорошо в списке. – Method

+0

Можете ли вы показать мне свой xaml –

ответ

0

Вы связываетесь с ItemsSource по телефону ListBox. Это ожидает несколько элементов, но вы привязываете один string.

string можно рассматривать как IEnumerable<char>, поэтому элемент создается для каждого символа в этом string. Вот почему вы видите один символ в строке.

Вы должны быть привязаны к более полезному IEnumerable<T>, где T представляет каждый элемент. Если вы хотите придерживаться строки, что-то вроде:

public IEnumerable<string> GetRaces() 
{ 
    foreach (BaseRace race in races) 
    { 
     yield return race.ToString(); 
    } 
} 

То есть, я не понимаю, что вы пытаетесь сделать с помощью этого метода. Почему бы просто не привязаться к Races (как ваш второй пример)?

+0

он побеждает цель даже иметь GetRaces. Если я могу просто использовать Список. Он просто побеждает цель моего кода, но он работает. – Method

+0

@Method да, это так, но вы не предоставили убедительной причины, почему требуется «GetRaces». Не добавляйте код только ради этого! –

+0

Вы правы, увы, я в классе ООП, и мне пришлось сделать классную диаграмму с помощью этих методов, они должны быть спроектированы, поэтому я мог бы также использовать их. Если я их не использую, значит, в них нет смысла. – Method

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