编辑编辑:我发现了问题。我们把:在案件和价值之间,它需要在之后。例如:案例“一般”:
感谢您的时间并投入所有人。
原件:
这比我试图制作它要简单得多。简单地说,我有一个列表框,说... 6个不同的“项目”(一般/ oSnaps / blah / blah / blah),当有人点击列表框中的一个项目时,我希望它更改面板。我有6个不同的面板(panel1,panel2等)堆叠在一起,在加载时只有第一个设置为可见。
我确定这只是设置哪个Panel可见,但我如何将其实际链接到列表框中的“项目”? SelectedIndexChanged是我认为的答案,但我对编程非常新。
MSDN仅演示如何在不同列表框中的项目之间切换。
任何帮助都将不胜感激。
编辑:这是我当前的代码
private void listBox1_SelectedIndexChanged(object sender,System.EventArgs e) {
string curItem = listBox1.SelectedItem.ToString();
curItem = listBox1.SelectedItem.ToString();
MessageBox.Show(curItem);
switch(curItem)
{
case : "General" //error here is: Only assignment, call,increment,await,and new object expressions can be used as a statement
panel1.Visible = false;
panel2.Visible = true;
break;
case : "E-Snaps" // same as above
panel2.Visible = false;
panel3.Visible = true;
break;
case : "blah" // same as above
panel3.Visible = false;
panel4.Visible = true;
}
}
单击listBox中的不同项目会显示一个包含正确内容的消息框(General / E-Snaps / blah / etc)。所以它显然在阅读它,我们如何让它现在切换面板?
我不应该也能做这样的事吗?
private void listBox1_SelectedIndexChanged(object sender,System.EventArgs e) {
string curItem = listBox1.SelectedItem.ToString();
curItem = listBox1.SelectedItem.ToString();
if curItem = "General"
{
panel1.Visible = true;
}
}
不是说我可以上班......但这看似合乎逻辑。如果我能得到某种形式的字符串/布尔转换...
答案 0 :(得分:1)
您可以在selectedindex已更改
上使用switch语句开始所以看起来像这样
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Get the currently selected item in the ListBox.
string curItem = listBox1.SelectedItem.ToString();
switch(curItem)
{
case "blah":
panel1.visible = false;
panel2.visible = true;
break;
case "blah":
panel2.visible = false;
panel3.visible = true;
break;
case "blah":
panel3.visible = false;
panel4.visible = true;
break;
}
}
等等,我希望这有帮助
说明:“blah”是你想要评估的价值,所以如果我正在做水果
“等等”会=苹果 或者bannana或菠萝等
答案 1 :(得分:1)
我会在绑定中使用IValueConverter - 这样可以将每个面板的可见性直接绑定到ListBox.SelectedIndex
。
<Grid>
<Grid.Resources>
<local:IndexToVisibilityConverter x:Key="IndexToVisibilityConverter" />
</Grid.Resources>
<ListBox x:Name="listBox"> ... </ListBox>
<Border x:Name="panel1"
Visibility="{Binding ElementName=listBox,
Path=SelectedIndex,
Converter={StaticResource IndexToVisibilityConverter}
ConverterParameter='0'}"
/>
<Border x:Name="panel2"
Visibility="{Binding ElementName=listBox,
Path=SelectedIndex,
Converter={StaticResource IndexToVisibilityConverter}
ConverterParameter='1'}"
/>
</Grid>
如果索引与参数匹配,“IndexToVisibilityConverter”应返回“Visibility.Visible”:
public class IndexToVisibilityConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((int)value == int.Parse((string)parameter) ? Visibility.Visible : Visibility.Collapsed);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
或者,请注意,如果您想使用过渡(如交叉淡入淡出,滑入/滑出等),那么您可能希望在SelectionChanged
事件上使用事件触发器,以及故事板或VisualState更改。