C# 向wp7 silverlight中的silverlight用户控件添加样式

C# 向wp7 silverlight中的silverlight用户控件添加样式,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我在silverlight中创建了一个用户控件(非wp7)。 我正在WP7应用程序中使用此控件,它可以正常工作。我唯一的问题是控件的样式与应用程序的样式不匹配(它的背景是白色的,文本框的颜色与文本框的颜色不一样,因此不显示,等等)。 我可以在XAML中将应用程序样式设置为用户控件吗 这是用户控件的XAML。我使用自己的颜色(透明,黑色为背景,白色为前景)。我不想在控件内使用颜色,我想从包含此控件的wp7控件获取颜色 wp7: 用户控制: <Grid x:Name="LayoutRoot

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

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

wp7:


用户控制:

<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>

您可以使用与Silverlight/WPF完全相同的方式在WP7中设置控件的样式。如果没有看到有问题的XAML,就不可能给出一个有效的解决方案,但是方法是一样的

如果需要更多帮助,请发布控件的XAML,并突出显示不符合您要求的区域


更新:您应该从使用
UserControl
切换到使用
Control
,这样您就可以创建一个“无外观”控件,该控件的控制时间定义了generic.xaml中的外观。然后,可以使用
Background=“{TemplateBinding Background}”
将模板绑定到控件上的依赖项属性(已在控件上定义了背景和前景)。关于无外观控件有很多很好的资源,ege

您可以使用与Silverlight/WPF完全相同的方式在WP7中设置控件的样式。如果没有看到有问题的XAML,就不可能给出一个有效的解决方案,但是方法是一样的

如果需要更多帮助,请发布控件的XAML,并突出显示不符合您要求的区域

更新:您应该从使用
UserControl
切换到使用
Control
,这样您就可以创建一个“无外观”控件,该控件的控制时间定义了generic.xaml中的外观。然后,可以使用
Background=“{TemplateBinding Background}”
将模板绑定到控件上的依赖项属性(已在控件上定义了背景和前景)。关于无外观控件有很多很好的资源,ege

<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>