Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何减少我的代码,几乎相同的结构的数量可能非常大_C#_Asp.net_Silverlight_Silverlight 4.0 - Fatal编程技术网

C# 如何减少我的代码,几乎相同的结构的数量可能非常大

C# 如何减少我的代码,几乎相同的结构的数量可能非常大,c#,asp.net,silverlight,silverlight-4.0,C#,Asp.net,Silverlight,Silverlight 4.0,也许这是一个非常简单的问题,但我找不到答案: 如何减少我的代码,几乎相同的结构的数量可能非常大: 比如说 <Windows:HierarchicalDataTemplate x:Key="**Level2ItemTemplate**" ItemsSource="{Binding Children}" ItemTemplate="{Stati

也许这是一个非常简单的问题,但我找不到答案: 如何减少我的代码,几乎相同的结构的数量可能非常大:

比如说

<Windows:HierarchicalDataTemplate x:Key="**Level2ItemTemplate**"
                                      ItemsSource="{Binding Children}"
                                      ItemTemplate="{StaticResource **Level3ItemTemplate**}">
        <Grid Height="100"
              Width="100"
              Margin="5">
            <Border Padding="5"
                    BorderThickness="1"
                    BorderBrush="#FFADADAD"
                    CornerRadius="5">
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1"
                                         StartPoint="0.5,0">
                        <GradientStop Color="#FFD47E00"
                                      Offset="0" />
                        <GradientStop Color="#FF563300"
                                      Offset="1" />
                    </LinearGradientBrush>
                </Border.Background>
                <TextBox TextWrapping="Wrap"
                         Text="{Binding Title, Mode=TwoWay}"
                         VerticalAlignment="Center"
                         HorizontalAlignment="Center"
                         FontWeight="Bold"
                         FontSize="13.333"
                         Style="{StaticResource EditableTitleStyle}" />
            </Border>
            <Image HorizontalAlignment="Right"
                   Source="add.png"
                   Stretch="Fill"
                   Width="16"
                   VerticalAlignment="Bottom"
                   Margin="0,0,2,2"
                   Height="16">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Graph:AddSpiderItemAction />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
            <Image HorizontalAlignment="Right"
                   Height="16"
                   Source="remove.png"
                   Stretch="Fill"
                   VerticalAlignment="Top"
                   Width="16"
                   Margin="0,2,2,0">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Graph:RemoveSpiderItemAction />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
        </Grid>
    </Windows:HierarchicalDataTemplate>
    <Windows:HierarchicalDataTemplate x:Key="**Level1ItemTemplate**"
                                      ItemsSource="{Binding Children}"
                                      ItemTemplate="{StaticResource **Level2ItemTemplate**}">
        <Grid Height="100"
              Width="100"
              Margin="5">
            <Border Padding="5"
                    BorderThickness="1"
                    BorderBrush="#FFADADAD"
                    CornerRadius="5">
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1"
                                         StartPoint="0.5,0">
                        <GradientStop Color="#FFB5B5B5"
                                      Offset="0" />
                        <GradientStop Color="#FF474747"
                                      Offset="1" />
                    </LinearGradientBrush>
                </Border.Background>
                <TextBox TextWrapping="Wrap"
                         Text="{Binding Title, Mode=TwoWay}"
                         VerticalAlignment="Center"
                         HorizontalAlignment="Center"
                         FontWeight="Bold"
                         FontSize="13.333"
                         Style="{StaticResource EditableTitleStyle}" />
            </Border>
            <Image HorizontalAlignment="Right"
                   Source="add.png"
                   Stretch="Fill"
                   Width="16"
                   VerticalAlignment="Bottom"
                   Margin="0,0,2,2"
                   Height="16">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Graph:AddSpiderItemAction />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
            <Image HorizontalAlignment="Right"
                   Height="16"
                   Source="remove.png"
                   Stretch="Fill"
                   VerticalAlignment="Top"
                   Width="16"
                   Margin="0,2,2,0">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Graph:RemoveSpiderItemAction />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
        </Grid>
    </Windows:HierarchicalDataTemplate>


等等…

您可以将相同的布局部分提取到单独的数据模板中,请参阅。将相同的样式转换为不同的样式

看一看非常好的MSDN文章,它描述了模板、样式、部件和状态模型

ScottGu的优秀文章:


您可以为常用元素创建样式。例如,为边框创建一个样式,为文本框创建一个样式等。然后在数据模板内将这些样式应用于相应的元素


这将使数据模板变小,也将使内存占用更小,因为样式数据不会重复。

您知道模板和样式,是吗?italic bold“是的,但我不知道如何实现这一点,因为我有不同的x:Key和ItemTemplate”。