【问题标题】:If my project is using code (App.cs vs. App.Xaml), can I have a style defined in Xaml that I can reference in code?如果我的项目正在使用代码(App.cs 与 App.Xaml),我可以在 Xaml 中定义一个可以在代码中引用的样式吗?
【发布时间】:2018-04-15 12:26:04
【问题描述】:

我正在尝试自定义 UWP 中 Picker 的外观(我想移除下拉箭头),并且我在 UWP App.Xaml 中定义了一个控件模板,类似于:

<Application
    x:Class="StoreFulfillment.UWP.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:StoreFulfillment.UWP"
    RequestedTheme="Light">
    <Application.Resources>
        <ResourceDictionary>
            <Style x:Name="PickerStyle" TargetType="ComboBox">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ComboBox">
                            <Grid>
                            ...
                            ...
                            ...
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>

在我的选择器自定义渲染器中,我想将 Picker UWP 控件(它是一个 ComboBox)的 Style 属性设置为 Xaml 中定义的 PickerStyle,如下所示:

protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
    base.OnElementChanged(e);
    ...
    ...
    ...
    Control.Style = (Windows.UI.Xaml.Style)Application.Current.Resources["PickerStyle"];
}

但是Application.Current.Resources 不包含我在 Xaml 中定义的样式。如何从自定义渲染器中引用或访问它?

【问题讨论】:

    标签: c# xaml xamarin.forms uwp-xaml xamarin.uwp


    【解决方案1】:

    您缺少Style 上的x:Key 属性,以便像这样检索它。您可以找到更多详细信息here

    <Style x:Key="PickerStyle" TargetType="ComboBox">
        <Setter Property="Template">
            <Setter.Value>
                ...
    

    【讨论】:

      【解决方案2】:

      资源可以有KeyName。不建议同时指定两者。在您的情况下 - 如果ControlApplication 中定义,您可以简单地说Control.Style = this.PickerStyle;。如果它在不同的页面中,您可能可以这样做 Control.Style = ((App)Application.Current).PickerStyle; 如果您更愿意使用资源键 - 请按照 G 的回答。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-15
        • 2017-07-09
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-14
        相关资源
        最近更新 更多