如果我的项目正在使用代码(App.cs 与 App.Xaml),我可以在 Xaml 中定义一个样式以在代码中引用吗?
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?
我正在尝试自定义 UWP 中选择器的外观(我想删除下拉箭头),并且我在 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 中定义的样式。我如何引用它或从自定义渲染器访问它?
您缺少 Style
上的 x:Key
属性,无法像这样检索它。您可以找到更多详细信息 here.
<Style x:Key="PickerStyle" TargetType="ComboBox">
<Setter Property="Template">
<Setter.Value>
...
资源可以有 Key
或 Name
。不建议同时指定两者。在您的情况下 - 如果 Control
是在 Application
中定义的,您可以简单地说 Control.Style = this.PickerStyle;
。如果它在不同的页面中,您也许可以这样做 Control.Style = ((App)Application.Current).PickerStyle;
如果您更愿意使用资源密钥 - 请遵循 G 的回答。
我正在尝试自定义 UWP 中选择器的外观(我想删除下拉箭头),并且我在 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 中定义的样式。我如何引用它或从自定义渲染器访问它?
您缺少 Style
上的 x:Key
属性,无法像这样检索它。您可以找到更多详细信息 here.
<Style x:Key="PickerStyle" TargetType="ComboBox">
<Setter Property="Template">
<Setter.Value>
...
资源可以有 Key
或 Name
。不建议同时指定两者。在您的情况下 - 如果 Control
是在 Application
中定义的,您可以简单地说 Control.Style = this.PickerStyle;
。如果它在不同的页面中,您也许可以这样做 Control.Style = ((App)Application.Current).PickerStyle;
如果您更愿意使用资源密钥 - 请遵循 G 的回答。