2012-01-12 11 views
2

これは愚かな質問か間違った単語を検索しました:
私はComboBoxを持っており、同等の部分を示すカスタムコンバーターを使ってダブルを表示します。
DataTemplateでは、Double型のデータ型を指定する必要がありますが、それを指定する方法はわかりません。私はそうする簡単な方法があると確信しています!ウィンドウにシステムの名前空間を追加するシステムデータ型のDataTemplateでバインドする

は、単にデータ型にダブルまたはSystem.Doubleを入力すると、どちらかない

<Window ... xmlns:sys="clr-namespace:System" ...> 

をコンパイルしません。

単純なDouble-TypeのViewModelを定義することは、どちらの解決策にもなり得ません。

これは、これまでの私のコードです:

<ComboBox ItemsSource="{Binding Gains}" SelectedItem="{Binding Gain, Mode=TwoWay}"> 
    <ComboBox.Resources> 
     <DataTemplate DataType=" ??????? fract"> 
      <TextBlock Text="{Binding ., Converter=fractConverter}"/> 
     </DataTemplate> 
    </ComboBox.Resources> 
</ComboBox> 

完全なソリューション:作品:SYSとしてSystem名前空間を使用して


利益一覧<はゲイン
ダブル>
あるコンボボックスは、このように動作します

ダブル

<Window ... xmlns:sys="clr-namespace:System;assembly=mscorlib" ...> 
です:このように

<ComboBox ItemsSource="{Binding Gains}" SelectedItem="{Binding Gain, Mode=TwoWay}"> 
    <ComboBox.Resources> 
     <DataTemplate DataType="{x:Type sys:Double}"> 
      <TextBlock Text="{Binding ., Converter={StaticResource realConverter}}"/> 
     </DataTemplate> 
    </ComboBox.Resources> 
</ComboBox> 

答えて

2

<DataTemplate DataType="{x:Type sys:Double}"> 
+0

'sys'エイリアスは、デフォルトでは追加されないため、spearate xmlnsとして追加する必要があります。 –

+0

hm、 '; assembly = mscorlib'を名前空間定義に追加すると少なくともコンパイルされますが、 'lala'というTextblockを含んでいてもdatatemplateはまだ動作しません。それでもToStringメソッドを使用して番号を表示します。 – JCH2k

+0

ありがとう、今すぐ作品!私はタイプx:タイプに愚かだった! – JCH2k

0

データテンプレートを指定する必要はありません。これは、データ型固有の(暗黙的な)ものを取り出すためにのみ使用されます)。データ型を省略してください。それはあなたがやっていることに非常に近い見た目ほどhttp://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat.aspx

は、このを見てください。

+0

これは私の最初の試みでしたが、十分強力ではないと思います。私は数<1を分数として表示したいと思います。 1/200 for 0.005 – JCH2k

+0

その後、変換する方法は、移動する方法です。 –

関連する問題