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和自定义控件模板对我来说也是最好的方法。你能发布这个渲染控件的图像吗?我看不出你想要完成什么。