2015-10-21 73 views
1

我想優化此代碼(用於C#(WPF)中的循環過程)。有沒有機會創建一種方法,執行所有這些代碼?更聰明一點?我不想將此代碼複製並粘貼到DoMyCode()。我的問題是,我點擊了20 ListViewItems。每ListViewItem也是如此(只是與另一個Label)。代碼優化:創建一個循環過程的方法

private void listViewItem_Group0_Selected(object sender, RoutedEventArgs e) 
{ 
    label_Position.Content = label_Group0.Content.ToString(); 
    SetDataGridItems(label_Group0.Content.ToString()); 
} 

private void listViewItem_Group1_Selected(object sender, RoutedEventArgs e) 
{ 
    label_Position.Content = label_Group1.Content.ToString(); 
    SetDataGridItems(label_Group1.Content.ToString()); 
} 

private void listViewItem_Group2_Selected(object sender, RoutedEventArgs e) 
{ 
    label_Position.Content = label_Group2.Content.ToString(); 
    SetDataGridItems(label_Group2.Content.ToString()); 
} 

private void listViewItem_Group3_Selected(object sender, RoutedEventArgs e) 
{ 
    label_Position.Content = label_Group3.Content.ToString(); 
    SetDataGridItems(label_Group3.Content.ToString()); 
} 

private void listViewItem_Group4_Selected(object sender, RoutedEventArgs e) 
{ 
    label_Position.Content = label_Group4.Content.ToString(); 
    SetDataGridItems(label_Group4.Content.ToString()); 
} 

我的XAML代碼如下所示:

<ListViewItem Selected="listViewItem_Group0_Selected"> 
    <DockPanel> 
     <Image Source="/Apptivities;component/Images/interessenten_.png" Stretch="None" /> 
     <Label Content="Interessenten Sponsoren" Name="label_Group0" /> 
    </DockPanel> 
</ListViewItem> 
<ListViewItem Selected="listViewItem_Group1_Selected"> 
    <DockPanel> 
     <Image Source="/Apptivities;component/Images/interessenten_.png" Stretch="None" /> 
     <Label Content="Interessenten Teilnehmer" Name="label_Group1" /> 
    </DockPanel> 
</ListViewItem> 
<ListViewItem Selected="listViewItem_Group2_Selected"> 
    <DockPanel> 
     <Image Source="/Apptivities;component/Images/keine_kooperation.png" Stretch="None" /> 
     <Label Content="Keine Kooperation" Name="label_Group2" /> 
    </DockPanel> 
</ListViewItem> 
<ListViewItem Selected="listViewItem_Group3_Selected"> 
    <DockPanel> 
     <Image Source="/Apptivities;component/Images/potenzielle_.png" Stretch="None" /> 
     <Label Content="Potenzielle Sponsoren" Name="label_Group3" /> 
    </DockPanel> 
</ListViewItem> 
<ListViewItem Selected="listViewItem_Group4_Selected"> 
    <DockPanel> 
     <Image Source="/Apptivities;component/Images/potenzielle_.png" Stretch="None" /> 
     <Label Content="Potenzielle Teilnehmer" Name="label_Group4" /> 
    </DockPanel> 
</ListViewItem> 

你知道,如何做到這一點?

+0

你的問題到底是什麼? –

+0

有沒有機會創建一種方法,即執行所有這些代碼?更聰明一點? :-) – gpuk360

+0

是的,你可以把它變成一種方法。但是這個問題是堆棧溢出的主題。 –

回答

2

所有的代碼可以很容易地轉換在一個方法基於發件人對象

private void listViewItem_Group_Selected(object sender, RoutedEventArgs e) 
     { 
      ListViewItem lv = sender as ListViewItem; 
      DockPanel dockpanel = (lv.Content) as DockPanel; 
      Label label = (dockpanel.Children[1]) as Label; 
      label_Position.Content = label.Content.ToString(); 
      SetDataGridItems(label.Content.ToString()); 

     } 

更改所有被選擇的事件爲「listViewItem_Group_Selected」,併爲DockPanel中一個常見的事件是一個ListViewItem的孩子,標籤可以通過遍歷dockpanel子控件來讀取。

+0

這是我正在尋找的解決方案!非常感謝! – gpuk360

0

您可以將前端(XAML/WinForm)中的所有listviewitem選定事件引用到一個代碼隱藏方法,然後使用sender對象區分它們。