这个宽度的数据类型是什么?

时间:2011-11-29 21:12:47

标签: c# wpf xaml .net-4.0

我正在尝试在我的xaml中定义一个本地资源,它应该是我的单元格的宽度,所以不要去:

<Setter Property="ColumnStretchMinWidth" Value="75"/>
<Textbox Width="75" />
<ColumnDefinition Width="*" MinWidth="75" />
...etc

我可以去

<Setter Property="ColumnStretchMinWidth" Value="{StaticResource MinCellWidth}"/>
<Textbox Width="{StaticResource MinCellWidth}" />
<ColumnDefinition Width="*" MinWidth="{StaticResource MinCellWidth}" />

但是当我定义这个常量时,我​​得到绑定错误,说它无法转换。我去的时候

<System:String x:Key="MinCellWidth">"75"</s:String>

我收到一条错误,说某些控件无法从String转换为Double。我去的时候

<System:Double x:Key="MinCellWidth">"75"</s:Double>

我收到一条错误,说它无法从Double转换为字符串用于其他控件(例如ColumnDefinition,其中允许使用“*”宽度)。

硬编码="75"的神奇类型是什么,可以将其转换为每个控件的相应类型。如何定义可以在所有这些不同位置使用的资源?

2 个答案:

答案 0 :(得分:5)

ColumnDefinition.Width的神奇类型是GridLength,它需要该类型的资源。就像TextBox.Width需要一个双倍。

<s:Double x:Key="minCellWidth">55</s:Double>
<sw:GridLength x:Key="minGridWidth">55</sw:GridLength>

答案 1 :(得分:0)

这与"75"的类型没有任何关系,它是一个字符串,就是使用type converters转换字符串文字。

这应该适用于绑定应用类型转换器的方式:

MinWidth="{Binding Source={StaticResource MinCellWidth}}"