WP7:如何覆盖静态资源?

WP7:如何覆盖静态资源?

问题描述:

如何覆盖Windows Phone 7 Apps中的静态资源?WP7:如何覆盖静态资源?

我在列表中堆叠很多文本框,我想让它们之间的边距更小,但是没有重新模拟整个控件。

我觉得PhoneTouchTargetOverhang是什么导致了大幅度的利润。我如何覆盖它?

我曾尝试加入这个我PhoneApplicationPage.Resources:

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

...但它不影响任何东西。

此外,我试图覆盖其他资源,如默认背景和前景色没有成功。无论我做什么,什么都不会发生。

澄清:

  • 我不想重新模板的整个控制,仅通过更改模板中使用一些资源。
  • 我不在乎它的“糟糕的设计”删除文本框模板上的触摸边距。对于情况下,我工作的一个要求,让他们并拢...

我可能误会了...

但如果你只是重复文本框数据绑定列表框里面,然后你可以在DataTemplate中设置这些文本框的边距。

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

不,将边距设置为0不起作用。在TextBox模板中引起边距的是PhoneTouchTargetOverhang-资源。如果我只能以某种方式覆盖它... – 2011-03-18 17:22:31

+1

感谢您的解释。刚刚在VS2010中玩过一段时间 - 我不相信PhoneTouchTargetOverhang是你需要改变的 - 但它确实看起来像你需要重新调整Blend中的TextBox。 – Stuart 2011-03-18 19:04:32

我还没有尝试过这一点,但设置TopBottom利润率负数应TextBox ES靠拢在一起。

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

这会导致文本框重叠,并且按下一个文本框可能会在另一个文本框中进入编辑模式。 – 2011-03-18 20:53:48

+0

尝试从-1而不是-10开始,并更改边距,直到符合您的喜好。 – Praetorian 2011-03-18 21:02:25

试图改变静态资源时,您应该检查这些资源:

How to: Apply Theme Resources for Windows Phone

Resources Overview - 这实际上显示了如何风格XAML一个文本框(在你的情况下的文本框控件)。由于你在wp7中工作,你可以在app.xaml文件中声明这些。如果您希望在整个应用中应用这些样式,这是一个不错的方法。如果不是Praetorian的解决方案是您希望设计的特定控件的替代方案。

从我用过的没有理由不应该这样做。说实话,在我看来,创建一个模板比在你的xaml文件中对单个控件应用负边距要好(整洁)。

请注意,出于用户体验目的,还有一个缘由。把它们放得太近会导致难以选择某种控制。我相信在design guidelines有一个要求,但我不确定。

下面是一个应用程序示例。XAML:

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

Here是TextBox控件创建一个模板,如果你不想从头开始完整的例子。

HTH。

+0

无法找到关于如何覆盖您提供的链接上的静态资源的信息......我不想完全重新设置/重新模板,只更改模板使用的一个或两个资源。这在WP7中是否有可能被删除?我不明白。 – 2011-03-19 07:35:58

+0

@Andreas从我所知,覆盖静态资源的唯一方法是在App.xaml中定义一个新的或直接修改标记。另外请记住,您不必定义完全“新”模板,只需应用您需要的样式即可。再次检查第二个链接。我认为你可以定义一个特定的样式(例如边距),而不必为控件定义完整的模板。 – loyalpenguin 2011-03-19 17:10:38