2017-03-23 3 views
1

私はXamarin.Formsを使用してアプリケーションを作成しています。アイコンをUWPアプリケーションのタブ付きページに表示したいとします。これを実現するために、カスタムレンダラーを使用しようとしています。カスタムレンダラコードxamarin.fromsでUWPヘッダーテンプレートのアイコンを使用する

class TabbedPageWithIconsRenderer : TabbedPageRenderer 
{ 
    protected override void OnElementChanged(VisualElementChangedEventArgs e) 
    { 
     base.OnElementChanged(e); 

     if (e.NewElement != null && Control != null) 
     { 
      Control.HeaderTemplate = App.Current.Resources["TabHeaderTemplate"] as DataTemplate; 
     } 
    } 
} 

とデータテンプレートのスタイルがあります:

<forms:ImageConverter x:Key="imageConverter" /> 

    <DataTemplate x:Key="TabHeaderTemplate"> 
     <StackPanel > 
      <Image 
       HorizontalAlignment="Center" 
       Margin="0,12,0,0" 
       Height="24" 
       Width="24" 
       Source="{Binding Icon, Converter={StaticResource imageConverter}}" /> 
      <TextBlock 
       FontFamily="Segoe UI" 
       Text="{Binding Title}" 
       Style="{StaticResource CaptionTextBlockStyle}" 
       LineStackingStrategy="BlockLineHeight" 
       LineHeight="14" 
       MaxLines="2" 
       IsTextScaleFactorEnabled="False" 
       TextAlignment="Center" 
       HorizontalAlignment="Center" 
       Margin="2,5,2,7" /> 
     </StackPanel> 
    </DataTemplate> 

問題は、タイトルが正常に動作していることですが、アイコンが表示されることはありません、しかしそれらは正しくForms.Xamlの各ページに割り当てられています。

私は間違っていますか?

答えて

0

私はあなたのコードをテストし、問題を再現しました。私は次のコードのような新しいカスタム画像変換プログラムでこの問題を解決しました。

public class MyImageConverter:Windows.UI.Xaml.Data.IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     var temp = (value as FileImageSource).File; 
     Windows.UI.Xaml.Media.ImageSource source = new BitmapImage(new Uri(temp)); 
     return source; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

あなたは(あなたがimageConverterを使用しているが、期待した効果が達成されなかった)Source="{Binding Icon,Converter={StaticResource imageConverter}}"のために結合したときにIconの戻り値の型はXamarin.Forms.FileImageSourceです。 TabHeaderTemplateにはWindows.UI.Xaml.Controls.Imageを使用しました。 Image.SourceWindows.UI.Xaml.Media.ImageSourceタイプ値のみを受け入れます。 これで、上記のコードのようなカスタムのコンバーターができます。

+0

コンバータサンプルが機能しました。 HeaderTemplateに標準のXamarin.Formsイメージコンバーターを使用することは不可能です。 –

関連する問題