WP7: Как переопределить статические ресурсы? - PullRequest
1 голос
/ 18 марта 2011

Как переопределить статические ресурсы в приложениях для Windows Phone 7?

Я укладываю много текстовых ящиков в список и хочу уменьшить поле между ними, но без повторного добавления всего элемента управления.

Я подумал, что PhoneTouchTargetOverhang - это то, что вызывает большой запас.Как мне переопределить это?

Я пытался добавить это в мой PhoneApplicationPage.Resources:

<Thickness x:Key="PhoneTouchTargetOverhang">0</Thickness>

... но это ни на что не влияет.

Также яЯ пытаюсь переопределить другие ресурсы, такие как фон по умолчанию и цвета переднего плана, но безуспешно.Что бы я ни делал, ничего не происходит.

Уточнение:

  • Я не хочу повторно шаблонировать весь элемент управления, измените только некоторые ресурсы, используемые шаблоном.
  • Мне все равно, если его «плохой дизайн» убрать сенсорные поля на текстовом поле-шаблоне.Для дела, над которым я работаю, необходимо, чтобы они были близко друг к другу ...

Ответы [ 3 ]

1 голос
/ 18 марта 2011

Я не пробовал это, но установка полей Top и Bottom на отрицательные числа должна сближать TextBox es.

<TextBox Margin="0,-10,0,-10" Text="Some text"/>
0 голосов
/ 19 марта 2011

Вы должны проверить эти ресурсы при попытке изменить статические ресурсы:

Как: применить тематические ресурсы для Windows Phone

, а также

Обзор ресурсов - Это фактически показывает, как стилизовать текстовое поле в xaml (в вашем случае элемент управления текстовым полем).Поскольку вы работаете в wp7, вы можете объявить их в файле app.xaml.Это хороший подход, если вы хотите применять эти стили в приложении.Если нет, то решение Преториана является альтернативой для конкретных элементов управления, которые вы хотели бы стилизовать.

Из того, что я использовал, нет причины, по которой это не должно работать.И, честно говоря, на мой взгляд, лучше (аккуратнее) создать шаблон, чем начинать применять отрицательные поля к отдельным элементам управления в ваших файлах xaml.

Также следует помнить, что существуют причины для полей в целях удобства пользователей.Расположите их слишком близко, и это затруднит выбор определенного элемента управления.Я полагаю, что есть требование в рекомендациях по проектированию , но я точно не уверен.

Вот пример того, что положить в app.xaml:

<Style x:Key="TextBoxStyle1" TargetType="TextBox">  
    <Setter Property="Template">  
         <Setter.Value> 
              <ControlTemplate TargetType="TextBox">
              </ControlTemplate>
         </Setter.Value>
    </Setter>
</Style>

Здесь - полный пример создания шаблона для элемента управления textbox, если вы не хотите начинать с нуля.

HTH.

0 голосов
/ 18 марта 2011

Возможно, я неправильно понял ...

Но если вы просто повторяете TextBox внутри ListBox с привязкой к данным, я думаю, вы могли бы просто установить Margin для этих TextBox внутри DataTemplate.

<ListBox ItemsSource="{...}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Margin="0" Text="{...}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
...