2014-03-06 28 views
0

安排列表框中的項目好的,所以我希望能夠在單擊單選按鈕'all'時顯示列表框中的所有信息。我還希望能夠在單擊「球員」單選按鈕時顯示球員「僅」,對於經理人員也是如此。任何幫助?謝謝!如何使用單選按鈕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-List在您的應用程序中發生變化。如果您想要修改應用程序中的列表並保持更新,那麼最容易創建一個自定義列表,該列表將具有一個屬性,該列表可以返回ObservableCollection,並將保持該列表的更新。

+0

謝謝zahorak! – crsMC