c# - 代码优化: Create a method for recurring procedures

标签 c# wpf xaml optimization methods

我正在尝试优化此代码(针对 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/

相关文章:

C# 为 xml 可序列化类创建 XSD 的最简单方法是什么

c# - 异步 httpclient 操作

c# - Windows Phone 应用程序有类似 snoop 的工具吗?

c# - Nopcommerce MessageTemplate,无法添加方法作为 token

c# - 切换到 VS 2012,现在窗体不能正确调整大小?

wpf - DataGridTemplateColumn 组合框绑定(bind)

xaml - 如何在 Windows Phone 8.1(Windows 运行时,通用)中更改系统栏进度指示器颜色

c# - 如何将 DataSet 中的所有表绑定(bind)到 DataGrid

c# - 具有字符串绑定(bind)到 Int 属性的 WPF 组合框

c# - 如何在wpf中聚焦选项卡