[英]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.