[英]Changing a “switch” from windows form to WPF
昨天我们弄清楚了如何获取列表框的内容,以便在我堆叠在一起的不同面板之间切换。 这次我试图在WPF中执行相同的操作,显然语法是不同的。 该代码在Windows窗体中可以100%正确地工作。 我尝试了几种不同的方法来尝试显示现在的“网格”,但无济于事。
提前致谢!
当前代码“尝试”。 我只是展示了几种尝试在第一个“案例”中更改代码的方法。
private void listBox1_SelectedIndexChanged(object sender, SelectionChangedEventArgs e)
{
// set the listboxselected item to a string variable
string curItem = listBox1.SelectedItem.ToString();
curItem = listBox1.SelectedItem.ToString();
// variable changes depening on mouse click, sets to whichever string value is selected
switch (curItem)
{
case "General":
gridGeneral.Visibility == true;
gridRightClick.Visibility = Visibility.Visible;
gridSnaps.Visibility = Visibility.Hidden;
break;
case "E-Snaps":
gridGeneral.Visibility = Visibility.Hidden;
gridRightClick.Visibility = Visibility.Hidden;
gridSnaps.Visibility = Visibility.Visible;
break;
case "Mouse":
gridGeneral.Visibility = Visibility.Hidden;
gridRightClick.Visibility = Visibility.Visible;
gridSnaps.Visibility = Visibility.Hidden;
break;
}
这是在Windows窗体中工作的代码
私人无效listBox1_SelectedIndexChanged(对象发送者,System.EventArgs e){
// set the listboxselected item to a string variable
string curItem = listBox1.SelectedItem.ToString();
curItem = listBox1.SelectedItem.ToString();
// variable changes depening on mouse click, sets to whichever string value is selected
switch(curItem)
{
case "General" :
panel1.Visible = false;
panel2.Visible = true;
panel3.Visible = false;
panel4.Visible = false;
panel5.Visible = false;
break;
等等等等...
在WPF中,您不会以与WinForms中相同的方式进行操作
在WPF中,您可能在WPF中只有一个控件,而在WinForms中您只有3个控件,并且控件用于呈现的模板将根据ListBox的SelectedItem
进行更改
控件定义很可能看起来像这样,以便其内容绑定到ListBox.SelectedItem
:
<ContentControl Content="{Binding ElementName=listBox1, Path=SelectedItem}" />
您可以使用ContentTemplates
或DataTemplates
告诉WPF如何绘制ContentControl的ContentTemplate。
如果SelectedItem
是自定义类,则DataTemplate
可能会更容易,但是由于在示例中为String,因此ContentTemplate
可能更好。
这是该ContentControl
的样式示例,该样式根据Content的值更改ContentTemplate
属性
<Style TargetType="{x:Type ContentControl}">
<!-- // Default Template -->
<Setter Property="ContentTemplate" Value="{StaticResource GeneralTemplate}" />
<!-- // Change template depending on a property -->
<Style.Triggers>
<Trigger Property="Content" Value="ESnaps">
<Setter Property="ContentTemplate" Value="{StaticResource ESnapsTemplate}" />
</Trigger>
<Trigger Property="Content" Value="Mouse">
<Setter Property="ContentTemplate" Value="{StaticResource MouseTemplate}" />
</Trigger>
</Style.Triggers>
</Style>
(我可能具有您在这里需要错误的确切绑定的语法……可能需要进行一些测试)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.