Xamarin.Forms为平台设置特定的样式

时间:2018-01-18 09:30:39

标签: xaml xamarin.forms themes xamarin.forms-styles

我尝试使用某些特定样式设置我的UWP应用程序样式,而在其他平台上它应该保持默认。

这是我的项目布局:

enter image description here

我尝试了以下事项: 在Clients.Shared中创建如下样式:

<Style x:Key="SomeStyle" TargetType="Button" />

Clients.Themes.UWP中添加相同的Style键,以便有希望覆盖它,但没有运气。

然后我尝试使用虚拟样式并使用onPlatform,但这也没有用,但我仍然认为这是要走的路。我有以下代码:

<Style x:Key="DummyStyle" TargetType="Button">
    <Setter Property="Style">
        <Setter.Value>
            <OnPlatform x:Key="ButtonStyle" x:TypeArguments="Style">
                <On Platform="UWP" Value="{StaticResource SomeStyle}"></On>
            </OnPlatform>
        </Setter.Value>
    </Setter>
</Style>

我尝试使用合并的ResourceDictionary.MergedDictionaries进行混乱但在那里我无法包含xaml

有人有任何线索吗?

2 个答案:

答案 0 :(得分:0)

为什么不使用

<Button.Style>
    <OnPlatform x:TypeArguments="x:Style">
        <OnPlatform.iOS>...</OnPlatform.iOS>
        <OnPlatform.Android>...</OnPlatform.Android>
        <OnPlatform.WinPhone>...</OnPlatform.WinPhone>
    </OnPlatform>
</Button.Style>

希望它会有所帮助。

答案 1 :(得分:0)

试试这个:

<OnPlatform x:TypeArguments="Color" Android="Green" iOS="White" WinPhone="White"
        x:Key="PrimaryColor" />


<Style x:Key="ButtonColor" TargetType="Button">
    <Setter Property="BackgroundColor" Value="{StaticResource PrimaryColor}" />
</Style>

<Button Text="Hello" HorizontalOptions="StartAndExpand"
   Grid.Row="2" Grid.ColumnSpan="2" Style="{StaticResource ButtonColor}" />

在这个例子中,我为一个名为ButtonColor的Button定义了一个样式。此按钮将为除Android以外的所有平台使用BackgroundColor白色,其中它将为绿色。

我发现这是该标签在造型方面最常见的用途;如果你正在使用字体,一定要在模拟器和实际设备上运行,以获得你想要的字体。