用数据模板绑定系统数据类型
这可能是一个愚蠢的问题,或者我搜索了错误的单词:
我有一个组合框,并希望使用自定义转换器显示双打(显示等效分数)。
在DataTemplate中,我必须指定一个DataType,它是Double,但我不知道如何规定它。我确信有一个简单的方法来做到这一点!用数据模板绑定系统数据类型
把系统的命名空间中的窗口不编译
<Window ... xmlns:sys="clr-namespace:System" ...>
的数据类型,只需键入双人或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>
完整的解决方案:
使用系统命名空间SYS:作品!
收益是一个List <双>
增益是双
<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>
像这样:
<DataTemplate DataType="{x:Type sys:Double}">
您不必指定数据模板 - 仅用于拾取数据类型特定(隐式)模板:)只需省略DataType。
看一看这个:http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat.aspx
,因为它看起来相当接近,你在做什么。
这是我第一次尝试,但我认为它不够强大。我想要显示数字 JCH2k 2012-01-12 15:15:06
1/200然后转换为要走的路。 – 2012-01-12 15:35:53
'sys'别名必须作为特殊xmlns添加,因为默认情况下它不会被添加。 – 2012-01-12 14:17:12
hm,当我将'; assembly = mscorlib'添加到它至少编译的名称空间定义时...但即使它包含一个说明'lala'的Textblock,数据模式仍然不起作用。它仍然使用ToString方法来显示数字。 – JCH2k 2012-01-12 15:13:47
谢谢,现在工作!我傻傻的键入x:Type! – JCH2k 2012-01-12 15:27:43