2017-06-15 8 views
0

私のアプリでカスタムフォントを使用していて、フォント属性を太字に変更する必要があります。.ttfファイル間を動的に変更するXamarinフォーム

は、私はすでにカラーを動的に変更するために管理し、リソースディクショナリを使用して、デフォルトのフォントの属性をしている:

<Color x:Key="LabelColor">White</Color> 
<FontAttributes x:Key="LabelFontAtt">None</FontAttributes> 

、その後、私のViewModel内の色や属性を変更MVVMを使用して:

App.Current.Resources["LabelColor"] = Xamarin.Forms.Color.FromHex("#01bf89"); 
App.Current.Resources["LabelFontAtt"] = FontAttributes.Bold; 

前の質問から、私はすでに、すべてのラベルのデフォルトとしてカスタムフォントを設定する方法を学んだ:

<Style TargetType="Label"> 
    <Setter Property="FontFamily"> 
     <Setter.Value> 
      <OnPlatform x:TypeArguments="x:String"> 
       <OnPlatform.Android>JosefinSlab-Regular.ttf#JosefinSlab-Regular</OnPlatform.Android> 
      </OnPlatform> 
     </Setter.Value> 
    </Setter> 
</Style> 

私はJosefinSlab-Regular.ttfJosefinSlab-Bold.ttfの間で切り替えたいと思いますが、私はそうしてもほとんど成功しませんでした。すでに属性や色を使って行ったことのバリエーションやそれを別のやり方で行う必要がありますか?

答えて

1

などのようなあなたの現在の設定では、第二のスタイルを作成することができます。その後、

<Style TargetType="Label" x:Key="BoldLabel"> 
    <Setter Property="FontFamily"> 
     <Setter.Value> 
      <OnPlatform x:TypeArguments="x:String"> 
       <OnPlatform.Android>JosefinSlab-Bold.ttf#JosefinSlab-Bold</OnPlatform.Android> 
      </OnPlatform> 
     </Setter.Value> 
    </Setter> 
</Style> 

そして、あなたはStyleでキーに基づいてTextColorを交換Style同じように入れ替えます。

実装しようとしている機能はわかりませんが、MVVMの使用方法に違反するViewModelにUIロジック(色など)を配置しているように見えているようですXamarinフォームで。 ViewModelのデータに基づいて色とスタイルを変更したい場合は、Triggersを見ることもできます。これはUI側にのみ存在するため、ViewModelロジックとUIロジックを完全に分離できます。

+0

もちろん、MVVMについてはかなり正しいですし、私はリファクタリング –

関連する問題