2017-12-08 24 views
0

XAMLでインライン配列を使用できますか?WPFインラインx:配列のバインド

<Control Property="{Binding MyVariable, 
Converter={StaticResource MyConverter}, 
ConverterParameter={x:Array s:Boolean, Items=[]{ {s:Boolean True}; {s:Boolean False} }}}" 
/> 

しかし、Visual Studioの私は、 "プロパティ" 怒鳴るエラーを次示しています。このような何かに

<Control> 
    <Control.Property> 
     <Binding Path="MyVariable" Converter="{StaticResource MyConverter}"> 
      <Binding.ConverterParameter> 
       <x:Array Type="s:Boolean"> 
        <s:Boolean>True</s:Boolean> 
        <s:Boolean>False</s:Boolean> 
       </x:Array> 
      </Binding.ConverterParameter> 
     </Binding> 
    </Control.Property> 
</Control> 

:私はこのような何かを変革しようとしている

"IList"のTypeConverterは文字列からの変換をサポートしていません

OBS:XAMLのArray、私はその一つだけそのため、VSが約

  • を駄々をこねるしなかったことを書いた:インラインXの正しい構文thatsの場合、私は知らない

    • 当然の例では、実用的でいないようだ、それは私が
  • +1

    なぜ、最初にXAMLを変換しようとしていますか? – mm8

    +1

    これはおそらくカスタムマークアップ拡張を介して行うことができますが、本当に、なぜですか? – dotNET

    +0

    純粋な構文の砂糖 –

    答えて

    1

    探しているものを示すだけの簡単な方法です、それはXAMLでインライン配列を使用することは可能ですか?

    いいえXAMLの配列 "インライン"を定義するための有効な構文はありません。

    あなたはx:Keyと、再利用可能なリソースとして定義することができます。その後、

    <x:Array x:Key="array" Type="s:Boolean"> 
        <s:Boolean>True</s:Boolean> 
        <s:Boolean>False</s:Boolean> 
    </x:Array> 
    

    ..and StaticResourceマークアップ拡張を使用して、それを参照します。

    <Control Property="{Binding MyVariable, 
         Converter={StaticResource MyConverter}, 
         ConverterParameter={StaticResource arr}}" /> 
    

    それとも、カスタム配列クラスを定義し、リソースとして定義することができます。

    <local:MyCollectionType /> 
    

    あなたが無駄にしたくない場合は、例えばそのコンストラクタ内の項目を持つカスタムタイプを移入することができますXAMLのマークアップにはさらにいくつかの行があります。 custom markup expressionを作成する

    Items=[]{ {s:Boolean True}; {s:Boolean False} }}}" 
    

    は、さらに別のアプローチは、次のようになります。しかし、このような何かのための組み込みのサポートはありません。

    +0

    十分に公正。私はまだVSがその構文をIListとして理解しているように見えるのは本当に不思議です –

    関連する問題