这可能是一个愚蠢的问题,或者我搜索了错误的词:
我有一个ComboBox,想要使用自定义转换器显示双打(显示等效分数)
在DataTemplate中,我必须指定一个DataType,它是Double,但我不知道如何规范它。我确信有一种简单的方法可以做到这一点!
将System-namespace添加到窗口中无法编译
<Window ... xmlns:sys="clr-namespace:System" ...>
在DataType中简单地键入Double或System.Double也不会。
为简单的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>
完整解决方案:
使用System命名空间作为 sys:工作!
收益是一个列表&lt; Double&gt;
增益是双重
<Window ... xmlns:sys="clr-namespace:System;assembly=mscorlib" ...>
Combobox的工作原理如下:
<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>
答案 0 :(得分:2)
像这样:
<DataTemplate DataType="{x:Type sys:Double}">
答案 1 :(得分:0)
您不必指定数据模板 - 它仅用于获取特定于数据类型(隐式)的数据模板:)只需省略您的数据类型即可。
看看这个:http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat.aspx
因为它看起来非常接近你正在做的事情。