2013-09-28 24 views
0

我正在制作一种清单应用程序。有一系列的一个StackPanel的TextBlocks的,当呼叫点击:Windows Phone:在运行时更改文本块样式

public void TextBlock1(object sender, MouseButtonEventArgs e) 
    { 
     (App.Current as App).detailTitle = "Check 1"; 
     (App.Current as App).detailMessage = "This is item 1"; 
     (App.Current as App).pageReferrer = "pivot1.Check1"; 
     Uri detailPage = new Uri("/DetailPage.xaml", UriKind.Relative); 
     NavigationService.Navigate(detailPage); 
    } 

然后在detailPage.xaml:

public DetailPage() 
    { 
     InitializeComponent(); 
     DetailPageTitle.Text = (App.Current as App).detailTitle; 
     textBlockDetail.Text = (App.Current as App).detailMessage; 
    } 

    private void doneButton_Click(object sender, EventArgs e) 
    { 
     NavigationService.GoBack(); 
    } 

现在,当doneButton_Click发生了,我想指的TextBlock风格改变从PhoneTextExtraLargeStyle到我创建的名为TextBlockStyleClicked的一个。

我该怎么做?

回答

0

试试这个:

public static class FrameworkElementExtensions 
{ 
    public static object TryFindResource(this FrameworkElement element, object resourceKey) 
    { 
     var currentElement = element; 

     while (currentElement != null) 
     { 
      var resource = currentElement.Resources[resourceKey]; 
      if (resource != null) 
      { 
       return resource; 
      } 

      currentElement = currentElement.Parent as FrameworkElement; 
     } 

     return Application.Current.Resources[resourceKey]; 
    } 
} 

使用:

ApplicationTitle.Style = (Style) ApplicationTitle.TryFindResource("PhoneTextTitle1Style"); 

希望这有助于。

+0

我将如何实现这一点,我是WP8开发新手。 –

+1

是什么导致了这个问题?这里有一个简单的例子:https://dl.dropboxusercontent.com/u/31216763/PhoneApp1.rar – Lumen

相关问题