如何覆盖Windows Phone 7应用程序中的静态资源?
我在列表中堆叠了很多TextBox,我希望它们之间的边距更小,但不重复整个控件。
我认为PhoneTouchTargetOverhang是什么导致了大的余量。我该如何覆盖它?
我尝试将其添加到我的PhoneApplicationPage.Resources:
<Thickness x:Key="PhoneTouchTargetOverhang">0</Thickness>
......但它并没有影响任何事情。
此外,我试图覆盖其他资源,例如默认背景和前景色,但没有成功。无论我做什么,都没有任何反应。
澄清:
答案 0 :(得分:1)
我没有尝试过,但将Top
和Bottom
页边距设置为负数会使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。