我正在尝试在我的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"
的神奇类型是什么,可以将其转换为每个控件的相应类型。如何定义可以在所有这些不同位置使用的资源?
答案 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}}"