在 wp7 silverlight 中添加样式到 silverlight 用户控件

本文关键字:silverlight 用户 样式 控件 添加 wp7 | 更新日期: 2023-09-27 17:55:21

我有一个在 silverlight 中创建的用户控件(非 wp7)。我在 WP7 应用程序中使用此控件,它可以工作。我唯一的问题是控件的样式与应用程序样式不匹配(它的背景是白色的,文本框与文本框的颜色不同,因此没有显示,等等)。是否可以在 XAML 中将应用样式设置为用户控件?

这是用户控件的 XAML。我使用了自己的颜色(透明,背景为黑色,前景为白色)。我不想使用控件内的颜色,我想从包含此控件的 wp7 控件中获取它们。

WP7:

<commonWpControls:MyUserControls  x:Name="myControl" DataContext="{Binding MyViewModel}" />

用户控制:

<Grid x:Name="LayoutRoot" Background="Transparent" VerticalAlignment="Stretch" >
    <StackPanel VerticalAlignment="Stretch">
        <StackPanel Orientation="Horizontal">
            <TextBlock x:Name="nameBlock" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Text="Name:" Foreground="White" />
            <TextBox x:Name="nameTextBox" Grid.Row="0" Grid.Column="1" Text="{Binding Path=Name}" Background="Black" Foreground="White" />
        </StackPanel>
        <StackPanel Grid.Row="3" Grid.Column="1" Background="Black" VerticalAlignment="Stretch" >
                <ListBox Margin="12,12,0,0" Name="listBox1" ItemsSource="{Binding Path=PropertiesCollection}" Background="Transparent" VerticalAlignment="Stretch" >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="100"></ColumnDefinition>
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <TextBlock Text="{Binding Key}" VerticalAlignment="Center" Grid.Column="0" Foreground="White"/>
                                <TextBox Text="{Binding Value, Mode=TwoWay}" Grid.Column="1" Background="Black" Foreground="White"/>
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
        </StackPanel>
    </StackPanel>
</Grid>

在 wp7 silverlight 中添加样式到 silverlight 用户控件

您可以在 WP7 中设置控件样式,其样式与 Silverlight/WPF 完全相同。如果不看到有问题的 XAML,就不可能为您提供有效的解决方案,但方法是相同的。

如果需要更多帮助,请发布控件的 XAML,并突出显示与你希望不同的区域。

更新:应从使用 UserControl 切换到使用 Control,以便可以创建一个"外观"控件,该控件具有定义 generic.xaml 中外观的控件临时。然后,可以使用 Background="{TemplateBinding Background}" 将模板绑定到控件上的依赖项属性(已在控件上定义了背景和前景)。有一些关于外观控件的伟大资源,例如。http://channel9.msdn.com/blogs/jbienz/creating-lookless-controls-for-wpf-and-silverlight