WP7:如何覆盖静态资源?

时间:2011-03-18 16:36:22

标签: silverlight windows-phone-7 resources override

如何覆盖Windows Phone 7应用程序中的静态资源?

我在列表中堆叠了很多TextBox,我希望它们之间的边距更小,但不重复整个控件。

我认为PhoneTouchTargetOverhang是什么导致了大的余量。我该如何覆盖它?

我尝试将其添加到我的PhoneApplicationPage.Resources:

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

......但它并没有影响任何事情。

此外,我试图覆盖其他资源,例如默认背景和前景色,但没有成功。无论我做什么,都没有任何反应。

澄清:

  • 我不想重新模板化整个控件,只更改模板使用的一些资源。
  • 我不在乎它的“糟糕设计”是否删除了文本框模板上的触摸边距。对于这个案子,我正在努力让它们紧密相连......

3 个答案:

答案 0 :(得分:1)

我没有尝试过,但将TopBottom页边距设置为负数会使TextBox es更靠近。

<TextBox Margin="0,-10,0,-10" Text="Some text"/>

答案 1 :(得分:0)

我可能误会了......

但是如果你只是在数据绑定ListBox中重复TextBox,那么我认为你可以在DataTemplate中设置这些TextBox的边距。

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

答案 2 :(得分:0)

在尝试更改静态资源时,您应该检查这些资源:

How to: Apply Theme Resources for Windows Phone

以及

Resources Overview - 这实际上展示了如何在xaml中设置文本框的样式(在您的情况下是文本框控件)。由于您在wp7中工作,您可以在app.xaml文件中声明这些内容。如果您希望在整个应用程序中应用这些样式,这是一个很好的方法。如果不是Praetorian的解决方案,您可以选择特定的控件。

从我用过的东西来看,没有理由不这样做。老实说,在我看来,创建模板比开始在xaml文件中的单个控件上应用负边距更好(更整洁)。

还要注意,出于用户体验目的而有利润的原因。把它们放得太近,这使得选择某个控件变得困难。我相信在design guidelines中有一个要求,但我不确定。

以下是app.xaml中的内容示例:

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

Here是为文本框控件创建模板的完整示例,如果您不想从头开始。

HTH。