2014-03-06 1 views
0

Хорошо, поэтому я хочу иметь возможность отображать всю информацию в списке при нажатии на кнопку «все». Я также хочу, чтобы показывать игрокам только «только», когда нажата кнопка «игроки», то же самое и для менеджера. Любая помощь? Благодаря!Как упорядочить элементы в окне списка с помощью радиокнопки REPOST

class Create 
{ 
    public enum Job { Player, Manager } 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public Job Porm { get; set; } 

    public Create(string name, int age, Job porm) 
    { 
     Name = name; Age = age; Porm = porm; 
    } 

    public override string ToString() 
    { 
     return string.Format("Name: {0} - Age {1} - {2}", Name, Age, Porm); 
    } 
} 

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     ObservableCollection<Create> playersAndManagers; 
     playersAndManagers = new ObservableCollection<Create>(); 
     Create newPlayer1 = new Create("John Terry", 27, Create.Job.Player); 
     Create newManager1 = new Create("jose mourinho", 51, Create.Job.Manager); 
     Create newPlayer2 = new Create("Wayne Rooney", 23, Create.Job.Player); 
     Create newPlayer3 = new Create("David Beckham", 37, Create.Job.Player); 
     Create newManager2 = new Create("David Moyes", 55, Create.Job.Manager); 
     playersAndManagers.Add(newPlayer1); 
     playersAndManagers.Add(newManager1); 
     playersAndManagers.Add(newPlayer2); 
     playersAndManagers.Add(newPlayer3); 
     playersAndManagers.Add(newManager2); 
     lbxInfo.ItemsSource = playersAndManagers; 
    } 
} 

<Window x:Class="example1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> 
<Grid> 
<ListBox x:Name="lbxInfo" HorizontalAlignment="Left" Height="207" Margin="66,71,0,0" VerticalAlignment="Top" Width="368"/> 
<RadioButton x:Name="rbtnAll" Content="All" HorizontalAlignment="Left" Margin="66,28,0,0" VerticalAlignment="Top"/> 
<RadioButton x:Name="rbtnPlayers" Content="Players" HorizontalAlignment="Left" Margin="203,28,0,0" VerticalAlignment="Top"/> 
<RadioButton x:Name="rbtnManagers" Content="Managers" HorizontalAlignment="Left" Margin="352,28,0,0" VerticalAlignment="Top"/> 
</Grid> 
</Window> 

enter image description here

ответ

1

наблюдаемые коллекции довольно сложно, они отсутствуют все модные черты нормального List<T>. Я предлагаю вам иметь List со всеми данными и второй коллекцией с данными, которые вы хотите отобразить.

Чтобы показать все данные, которые вы можете просто сказать

lbxInfo.ItemsSource = playersAndManagers; 

, когда вы хотите показать только менеджерам:

lbxInfo.ItemsSource = playersAndManagers.Where(m => m.Porm == Job.Manager) 

и для показа только игроков:

lbxInfo.ItemsSource = playersAndManagers.Where(p => p.Porm == Job.Player) 

Это, однако, не будет обновлять отображаемый список, если в вашем приложении изменяется список playersAndManagers. Если вы хотите изменить список в приложении и сохранить обновление ListBox, было бы проще создать пользовательский список, который будет иметь свойство, которое может вернуть ObservableCollection и будет содержать этот обновленный.

+0

Thanks zahorak! – crsMC

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