簡體   English   中英

將“開關”從Windows窗體更改為WPF

[英]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}" />

您可以使用ContentTemplatesDataTemplates告訴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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM