默认情况下,UserControl无法使用应用程序资源

时间:2017-02-02 08:56:36

标签: c# uwp

我在我的UWP应用程序中使用了自定义样式。我的意思是我在App.xaml中编写了这些代码

    <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary x:Name="ThemeDictionary">
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Styles\BasicStyle.xaml" />
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

在BasicStyle.xaml中我编写了基本样式,如

     <Style TargetType="TextBox">
    <Setter Property="Background"
            Value="White" />
    <Setter Property="BorderThickness"
            Value="1" />
    <Setter Property="BorderBrush"
            Value="#B9C5B7" />
    <Setter Property="VerticalContentAlignment"
            Value="Center" />
</Style>

当我更改我的应用程序的某些设置时,我想加载另一个样式文件

     ResourceDictionary rd = new ResourceDictionary() { Source = uri };
     Resources.MergedDictionaries[0].MergedDictionaries[0] = rd; 

一切正常但usercontrol的风格无效。

我在BasicStyle.xaml写道:

    <Style TargetType="UserControl">
    <Setter Property="Width" Value="700"></Setter>
</Style>

但它没有用。我无法在我的xaml页面中定义样式并继承我上面提到的默认样式,因为有时它在应用程序中间被更改,我不知道什么是默认样式。如您所知,textboxButton等其他控件的工作正确。谁可以告诉我usercontrol有什么问题以及如何解决?

1 个答案:

答案 0 :(得分:0)

我发现了我的问题,在我的xaml中,我使用UserControl标记作为树的根:

<UserControl x:Class="MyView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
         xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
   <Grid>
   </Grid>
</UserControl>

我将它更改为Page类的子树,它起作用了:

 <Page x:Class="MyView"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
     xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
<UserControl>
<Grid>
</Grid>
</UserControl>
</Page>