2011-03-18 151 views
1

如何覆蓋Windows Phone 7 Apps中的靜態資源?WP7:如何覆蓋靜態資源?

我在列表中堆疊很多文本框,我想讓它們之間的邊距更小,但是沒有重新模擬整個控件。

我覺得PhoneTouchTargetOverhang是什麼導致了大幅度的利潤。我如何覆蓋它?

我曾嘗試加入這個我PhoneApplicationPage.Resources:

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

...但它不影響任何東西。

此外,我試圖覆蓋其他資源,如默認背景和前景色沒有成功。無論我做什麼,什麼都不會發生。

澄清:

  • 我不想重新模板的整個控制,僅通過更改模板中使用一些資源。
  • 我不在乎它的「糟糕的設計」刪除文本框模板上的觸摸邊距。對於情況下,我工作的一個要求,讓他們併攏...

回答

0

我可能誤會了...

但如果你只是重複文本框數據綁定列表框裏面,然後你可以在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

1

我還沒有嘗試過這一點,但設置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

0

試圖改變靜態資源時,您應該檢查這些資源:

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