这是我第一次使用 ToggleSwitch。我想要实现的是使用不同的切换开关从列表中显示不同的数据。
我有一个 ListView,其中包含多个 TextBlocks 和一个 ToggleSwitch,用于每一行数据。
然后我用 List 中的数据填充 ListView。(使用预见的类填充列表
公共 ToggleSwitch 开关 {get; 放;}
以下是我尝试从每一行获取 ToggleSwitch 数据的方法:
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
for (int a = 0; a < jointList.Count; a++)
{
jointList[a].Switch = sender as ToggleSwitch;
if (jointList[a].Switch != null)
{
if (jointList[a].Switch.IsOn == true)
{
ToggleTest.Text = jointList[a].ProductId.ToString();
ToggleTest.Visibility = Visibility.Visible;
}
else
{
ToggleTest.Visibility = Visibility.Collapsed;
}
}
}
}
不幸的是,我从所有 ToggleSwitches 中获得了相同的(最后添加的)productId,就好像它们指向同一个地方一样。
编辑>我已经按照 touseef 的建议重写了代码:
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
for (int i = 0; i < jointList.Count; i++)
{
if (jointList[i].Value == true)
{
ToggleTest.Text = jointList[i].ProductId.ToString();
// ToggleTest.Text = jointList[a].ProductId.ToString();
ToggleTest.Visibility = Visibility.Visible;
}
else
{
ToggleTest.Visibility = Visibility.Collapsed;
}
}
}
但现在什么都没有出现。
编辑:这是解决问题的另一种尝试:
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
foreach (var record in jointList)
{
if (record.Value == true)
{
ToggleTest.Text = record.ProductId.ToString();
ToggleTest.Visibility = Visibility.Visible;
}
else
{
ToggleTest.Visibility = Visibility.Collapsed;
}
}
}
现在只有一个 ToggleSwitch 有效,对应于最后添加的记录(我正在提取jointList的ProductId)。其他 ToggleSwitch 均不起作用。使用上面的代码时,它们不会返回任何数据。