在Windows Phone中使用.NET中的Listbox和类似CheckBoxList的复选框
本文关键字:CheckBoxList 复选框 Listbox 中的 Phone Windows NET | 更新日期: 2023-09-27 17:59:05
很抱歉问这个基本问题,但我厌倦了搜索所有内容,找不到任何有用的内容。
我想在数据模板中使用一个列表框和一个复选框,就像.Net中的CheckBoxList一样,我唯一想做的就是:让前面有名称的复选框列表,选择一个,然后单击一个按钮,选中列表框中的项目,并检索所选复选框的文本。
我是一名.NET程序员,但这开始让我感到不安
这是ListBox XAML代码。
<ListBox Height="299" Name="lstbEquipas" Width="432">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Name="ckbEquipa" Content="{Binding Designacao}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这就是我用来填充列表框的方法,它的工作原理与aspnet中的CheckListBox完全一样,一个前面有文本的复选框列表。
GameManager.GameManagerSoapClient GM;
public Page1()
{
InitializeComponent();
GM = new GameManager.GameManagerSoapClient();
GM.LerEquipasAsync();
GM.LerEquipasCompleted += new EventHandler<GameManager.LerEquipasCompletedEventArgs>(GM_LerEquipasCompleted);
}
void GM_LerEquipasCompleted(object sender, GameManager.LerEquipasCompletedEventArgs e)
{
XDocument data = XDocument.Load(new StringReader(e.Result));
var equipas = from query in data.Descendants("Equipas")
select new Equipa
{
ID = (int)query.Element("ID"),
Designacao = (string)query.Element("Designacao"),
};
lstbEquipas.ItemsSource = equipas;
}
这就是上面使用的classe。
public class Equipa
{
int iD;
string designacao;
public int ID
{
get { return iD; }
set { iD = value; }
}
public string Designacao
{
get { return designacao; }
set { designacao = value; }
}
}
我只想在按钮点击事件中,获取ListBox中第一个选中复选框的文本。所以我可以将它发送到Web服务并保存到数据库中。
private void btnRegistar_Click(object sender, RoutedEventArgs e)
{
int i = 0;
foreach (ListBoxItem Item in this.lstbEquipas.Items)
{
//i want to check the checkbox were
}
//GM.InserirNovoUtilizadorAsync(this.txtLoginUtilizador.Text, this.txtLoginPassword.Password, 1);
//GM.InserirNovoUtilizadorCompleted += new EventHandler<GameManager.InserirNovoUtilizadorCompletedEventArgs>(GM_InserirNovoUtilizadorCompleted);
}
如有任何帮助,将不胜感激
我建议将ItemsSource
的数据存储在一个属性中:
public ObservableCollection<Equipa> Equipas { get; set; }
void GM_LerEquipasCompleted(object sender, GameManager.LerEquipasCompletedEventArgs e)
{
XDocument data = XDocument.Load(new StringReader(e.Result));
var equipas = from query in data.Descendants("Equipas")
select new Equipa
{
ID = (int)query.Element("ID"),
Designacao = (string)query.Element("Designacao"),
};
Equipas = new ObservableCollection<Equipa>(equipas);
lstbEquipas.ItemsSource = Equipas;
}
然后,您可以使用LINQ:从上面的属性中获得所有检查项目的列表
private void btnRegistar_Click(object sender, RoutedEventArgs e)
{
//get only checked items, and store it in variable
var checkedItems = Equipas.Where(o => o.IsSelected);
foreach (Equipa Item in checkedItems)
{
//here you can save current item to database
}
}