C# 如何使这种风格可重复使用?

C# 如何使这种风格可重复使用?,c#,silverlight,xaml,C#,Silverlight,Xaml,我设计了我的叠加弹出窗口,基本上是这样的用户控件: <Grid VerticalAlignment="Center" HorizontalAlignment="Center" MaxWidth="400" MinHeight="150" MinWidth="250"> <Grid.RowDefinitions> <RowDefinition Height="Auto" />

我设计了我的叠加弹出窗口,基本上是这样的用户控件:

<Grid VerticalAlignment="Center" HorizontalAlignment="Center" MaxWidth="400" MinHeight="150" MinWidth="250">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="42" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <Path Grid.ColumnSpan="2" Data="M0,26 L27,26 L27,0 L26,0 z" Fill="#FFFFFF" />
            <Border Background="#FFFFFF" Margin="27, 0, 0, 0" />
            <Image 
                Source="/Infrastructure.SL;component/Images/img_logo.png" 
                Height="24" HorizontalAlignment="Left" Margin="15,0,0,0" />
            <Image 
                Source="/Infrastructure.SL;component/Images/img_tab_ornament.png"
                Height="26" HorizontalAlignment="Right"/>

            <Border Grid.Row="1" Grid.RowSpan="3" BorderThickness="1" BorderBrush="#23ceff">
                <Border.Effect>
                    <DropShadowEffect Opacity="0.75" Direction="-45" Color="Black" ShadowDepth="3"/>
                </Border.Effect>
            </Border>

            <Border Grid.Row="2" Margin="1,0,1,1" Grid.RowSpan="2">
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#fcfff4"/>
                        <GradientStop Color="#cfddea" Offset="1"/>
                    </LinearGradientBrush>
                </Border.Background>
            </Border>

            <my:DitatToolbar Grid.Row="1" Mode="Ok" Margin="1, 0, 1, 0" CaptionsOrientation="Horizontal"/>            

            <Image 
                Grid.Row="2" Height="32" Width="32" 
                VerticalAlignment="Bottom" HorizontalAlignment="Center" 
                Source="{Binding InteractionIconSource}"  />

            <TextBlock Grid.Row="3" Foreground="#3c3c3c" Text="{Binding Message}" HorizontalAlignment="Center" TextWrapping="Wrap" Margin="10" />
        </Grid>

我需要设计一些像这样的窗口,有一些细微的区别。大部分XAML都可以重用,但我不确定如何实现它。这里唯一独特的XAML是

<my:DitatToolbar Grid.Row="1" Mode="Ok" Margin="1, 0, 1, 0" CaptionsOrientation="Horizontal"/>            

                <Image 
                    Grid.Row="2" Height="32" Width="32" 
                    VerticalAlignment="Bottom" HorizontalAlignment="Center" 
                    Source="{Binding InteractionIconSource}"  />

                <TextBlock Grid.Row="3" Foreground="#3c3c3c" Text="{Binding Message}" HorizontalAlignment="Center" TextWrapping="Wrap" Margin="10" />

其他一切都是铬的。我真的只想把它放在一个地方。我可以在Silverlight中使用什么来实现这种重用


我觉得我需要创建基本控件和继承,但不适合使用XAML方面。我的代码基本上是空白的,我使用的是MVVM,有很多方法。最佳答案可能取决于应用程序的总体要求

在更广泛的意义上,一种快速且可能有用的方法是使用框架。要进行尝试,请创建一个新的Silverlight项目并选择“Silverlight导航应用程序”模板

请查看MainPage.xaml。你可以把你的chrome放在那里,然后用home.xaml等相同的方式实现所有特定的屏幕。如果你需要这个功能,框架/导航框架是非常好的。它可以与浏览器集成,并允许与屏幕进行适当的深度链接


编辑:创建ContentCtrl需要一点工作,但不太复杂。这里的一切都有点难以解释,但是这个链接应该可以做到这一点:

导航框架可能太多了。我用的是棱镜,所以我可以用他们的区域,但理想情况下我想要一些“手动”的东西。你有ContentControl的示例吗?ContentControl和自定义控件模板对我来说也是最好的方法。你能发布这个渲染控件的图像吗?我看不出你想要完成什么。