我正在尝试优化此代码(针对 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>
你知道如何做到这一点吗?
最佳答案
您的所有代码都可以基于发送者对象以一种方法轻松转换
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());
}
将所有 Selected 事件更改为公共(public)事件“listViewItem_Group_Selected”,并且由于 DockPanel 是 ListViewItem 的子控件,因此可以通过迭代 DockPanel 子控件来读取 Label。
关于c# - 代码优化: Create a method for recurring procedures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33258399/