摘要:C# WPF 讓listbox的item只能單選item(即使有相同item內容)
這個東西看起來很簡單,
但是當我用原本的方法時,我加入一模一樣的item時,listbox就出錯了!
也不是真的出錯,就是他選擇了兩條item(一樣原因是他不知道兩個不同)。
去了英討還被人唸了一下說我WPF最好去重唸(但是我確實是自己熬的沒人教呀)Orz
現在介紹的Binding一直是我的痛
因為我很不會用.....
但是當我會用時,真是進入天堂呀!!!!!
所以將你的listbox改成這樣:
<ListBox Height="248" HorizontalAlignment="Left" Margin="141,223,0,0" Name="listBox" VerticalAlignment="Top" Width="378">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Location}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
接著去建立一個叫locatLost的`ObservableCollection`
ObservableCollection<locateItem> locatList = new ObservableCollection<locateItem>();
public class locateItem
{
public string Location { get; set; }
public string Id { get; set; }
public string Img { get; set; }
}
最後將資料繫結到你的listBox
listBox.ItemsSource = locatList;
到這裡你可能覺得很普通,
但是我告訴你,現在只要你修改locatList,你的lixtBox就會馬上反應!
所以昨天說得將項目往上和往下移就變得超簡單:
private void btnUp_Click(object sender, RoutedEventArgs e)
{
if (listRoom.SelectedItem != null && listRoom.SelectedIndex != 0)
{
//=============================順序往上(第一筆不動)===========================//
int ch = listRoom.SelectedIndex;
locatList.Move(ch, ch - 1);
}
}
private void btnDown_Click(object sender, RoutedEventArgs e)
{
if (listRoom.SelectedItem != null && listRoom.SelectedIndex != listRoom.Items.Count - 1)
{
//===========================順序往下(最後一筆不動)===========================//
int ch = listRoom.SelectedIndex;
locatList.Move(ch, ch + 1);
}
}
也就是從頭到尾你想怎麼改listbox的結果只要操作locatList就可以了!
超好用的!
難怪很多人推薦WPF~
對於資料繫結還不太了解的,
我推薦看這一篇:http://msdn.microsoft.com/zh-tw/magazine/cc163299.aspx
然後順便祝大家萬聖節快樂喔~
SV做的萬聖節小遊戲:
https://googledrive.com/host/0B7hg_8WvMyfJbDNoNU1CQTZWX2c/