我正在使用Microsoft提供的TiltEffect util。我試圖用的TextBlocks,但是,這是行不通的使用它,即使我將TextBlock類型添加到可傾斜的項目清單:TextBlock上的TiltEffect
TiltEffect.TiltableItems.Add(typeof(System.Windows.Controls.TextBlock));
但是,如果我周圍有(邊)境的TextBlock,並將Tap事件移動到邊框,它可以正常工作。
這種行爲是否有任何特定的原因?將所有可裁切的TextBlocks與邊框包圍起來並不太優雅。
更新:同樣適用於矩形形狀。
UPDATE2:我現在的解決方案是一個解決辦法,我定義的自定義控制:
<UserControl x:Class="MyApp.Controls.TiltableTextBlock"
Name="tiltableTextBlock"
...>
<Button Margin="0" Padding="0">
<Button.Template>
<ControlTemplate>
<TextBlock Margin="0" Padding="0"
Text="{Binding Text, ElementName=tiltableTextBlock}"
Style="{Binding Style, ElementName=tiltableTextBlock}" />
</ControlTemplate>
</Button.Template>
</Button>
</UserControl>
而且在後面的代碼:
public partial class TiltableTextBlock : UserControl
{
public TiltableTextBlock()
{
InitializeComponent();
}
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(TiltableTextBlock), new PropertyMetadata(String.Empty));
//NOTE: hiding the Style property of the base class, so the Style does not get applied to the UserControl, rather to the TextBlock.
public new Style Style
{
get { return (Style)GetValue(StyleProperty); }
set { SetValue(StyleProperty, value); }
}
public new static readonly DependencyProperty StyleProperty =
DependencyProperty.Register("Style", typeof(Style), typeof(TiltableTextBlock), new PropertyMetadata(new Style(typeof(TextBlock))));
}
我目前不使用任何其他特定的TextBlock屬性,只是文本,所以如果需要TextWrapping,FontSize等,它必須以相同的方式實現。
但是我對這個解決方案並不滿意,所以仍然在尋找更優雅的解決方法。
UPDATE3:上面的方法並不完美,我發現它不確定地崩潰,出現「參數不正確」異常(有時會在我啓動應用程序後拋出,有時不會)。
我認爲這是有關我的問題,我剛剛發佈。你有沒有嘗試讓你的背景透明? http://stackoverflow.com/questions/14664251/why-cant-i-tap-click-blank-areas-inside-of-a-border-contentcontrol-without-sett – kamranicus 2013-02-02 17:10:48