2017-08-10 6 views
0

私のアプリケーションの左余白と右余白には2つの異なる値があります。 (27と64としましょう)xamarinフォームはResourceDictionaryから値を取得します

これらの値をResourcesDictionatyから取得し、それらを私のXAMLに設定することは可能ですか?例

<StackLayout Margin="{Left1},0,{Right1},0"> 
</StackLayout> 

答えて

1

あなたはResourceDictionaryにdouble値としてそれらを指定し、他のリソース/スタイルでまたはエレメントレベル自体でそれらを参照することができます。

サンプルリソース・ディクショナリ

<ResourceDictionary> 
    <!-- namespace declaration 
      xmlns:sys="clr-namespace:System;assembly=System.Runtime" --> 
    <sys:Double x:Key="leftMargin">20</sys:Double> 
    <sys:Double x:Key="rightMargin">30</sys:Double> 

    <Thickness x:Key="MyMargin1" 
     Left="{StaticResource leftMargin}" 
     Right="{StaticResource rightMargin}" 
     Top="20" 
     Bottom="30" /> 

    <Thickness x:Key="MyMargin2" 
     Left="{StaticResource leftMargin}" 
     Right="{StaticResource rightMargin}" 
     Top="5" 
     Bottom="15" /> 
</ResourceDictionary> 

使用例も上マージンと下マージンを設定します

<StackLayout> 

    <BoxView BackgroundColor="Blue" Margin="{StaticResource MyMargin1}" /> 

    <BoxView HeightRequest="1" BackgroundColor="Black" /> 

    <BoxView BackgroundColor="Red" Margin="{StaticResource MyMargin2}" /> 

    <BoxView HeightRequest="1" BackgroundColor="Black" /> 

    <BoxView BackgroundColor="Yellow"> 
     <BoxView.Margin> 
      <Thickness 
       Left="{StaticResource leftMargin}" 
       Right="{StaticResource rightMargin}" 
       Top="30" 
       Bottom="10" /> 
     </BoxView.Margin> 
    </BoxView> 

    <BoxView HeightRequest="1" BackgroundColor="Black" /> 
</StackLayout> 

screenshot

+0

これは完璧です!ありがとう – Dimitris

1

私は個々の値のため、これが動作することはないと思うのために

。次のようにして、しかし、リソースディクショナリの値に全体Marginをバインドすることができます。

<ResourceDictionary> 
    <Thickness x:Key="MyMargin">27,0,64,0</Thickness> 
</ResourceDictionary> 

<StackLayout Margin="{StaticResource MyMargin}"> 
</StackLayout> 
+0

!私はそれを望んでいない! – Dimitris

+0

それからそれらを0に設定してください。それはあなたが探しているものを達成すべきですか? –

+0

私はあなたが私が求めていることを理解したとは思わない。私は私のページに10個のコントロール(例えば)を持っています。最初のマージンは20,1,2,4、2番目のマージンは20,12,20,5、3番目のマージンはすべて同じマージンですが、上下のマージンは同じではありません。同じことがアプリケーションのすべてのページに起こります。あなたのソリューションは、すべてのために左下、右下に修正されています。私はそれを望んでいません。 – Dimitris

関連する問題