Каков тип данных этой ширины? - PullRequest
3 голосов
/ 30 ноября 2011

Я пытаюсь определить локальный ресурс в моем 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 ]

5 голосов
/ 30 ноября 2011

Магический тип ColumnDefinition.Width равен GridLength , и для него требуется ресурс этого типа. Так же, как TextBox.Width нужно удвоить.

<s:Double x:Key="minCellWidth">55</s:Double>
<sw:GridLength x:Key="minGridWidth">55</sw:GridLength>
0 голосов
/ 30 ноября 2011

Это не имеет ничего общего с типом "75", это строка, дело в том, что строковые литералы конвертируются с использованием преобразователей типа .

Кстати, это должно работать, так как привязки также применяют преобразователи типов:

MinWidth="{Binding Source={StaticResource MinCellWidth}}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...