Добавить стиль к пользовательскому элементу управления silverlight в wp7 silverlight

#c# #silverlight #windows-phone-7

#c# #silverlight #windows-phone-7

Вопрос:

У меня есть пользовательский элемент управления, который я создал в 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>
  

Ответ №1:

Вы можете стилизовать элементы управления в WP7 точно так же, как вы можете для Silverlight / WPF. Не видя XAML, о котором идет речь, невозможно предложить вам рабочее решение, но подход тот же.

Если вам нужна дополнительная помощь, опубликуйте XAML для элемента управления и выделите области, которые не такие, какими вы хотели бы их видеть.

ОБНОВЛЕНИЕ: вместо этого вам следует переключиться с использования UserControl на использование Control , чтобы вы могли создать элемент управления «без внешнего вида», который имеет временную настройку элемента управления, определяющую внешний вид в generic.xaml. Затем вы можете использовать Background="{TemplateBinding Background}" для привязки шаблона к свойствам зависимости в элементе управления (фон и передний план уже определены в элементе управления). Есть несколько отличных ресурсов по элементам управления без внешнего вида, ege. http://channel9.msdn.com/blogs/jbienz/creating-lookless-controls-for-wpf-and-silverlight