2017-11-02 4 views
0

私は(私は、ドロップダウン矢印を削除する)UWP中ピッカーの外観をカスタマイズしようとしている、と私はUWP App.Xamlで定義されたコントロールテンプレートを持っている、と似:プロジェクトでコード(App.csとApp.Xaml)を使用している場合、コードで参照できる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> 

そして、私のピッカーカスタムレンダラでは、私はXAMLで定義されてPickerStyleに(コンボボックスである)ピッカーUWP制御のStyleプロパティを設定したい、このような何か:

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

しかしApplication.Current.Resourcesはスタイルが含まれていません私はXamlで定義しました。それを参照する方法や、カスタムレンダラからアクセスする方法はありますか?

答えて

2

Styleにはx:Keyという属性がありません。詳細はhereです。

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

リソースはKeyまたはNameのいずれかを有することができます。両方を指定することはお勧めしません。あなたの場合 - ControlApplicationで定義されている場合は、単にControl.Style = this.PickerStyle;と言うことができます。それが別のページにある場合は、あなたができるかもしれないControl.Style = ((App)Application.Current).PickerStyle;あなたはむしろリソースキーを使用する - Gの答えに従ってください。

関連する問題