2014-01-12 62 views
0

我想根据当前选定的主题更改Windows Phone应用程序中边框的颜色。我写了以下内容,但不起作用。无论选择的主题如何,它都是白色的边框。使用C#Windows Phone 7.1更改Border.BorderBrush值

这是用于应用程序(contacts.xaml)的xaml代码。

[XAML代码]

 <StackPanel x:Name="StackPost_Viewer"> 
      <Border BorderBrush="White" BorderThickness="3" HorizontalAlignment="Left" Height="100" Margin="10,10,0,0" VerticalAlignment="Top" Width="436" Tap="Show_ContactList_gsecs"> 
       <TextBlock TextWrapping="Wrap" Text="General Secretaries Social and Cultural" FontSize="36" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
      <Border BorderBrush="White" BorderThickness="3" HorizontalAlignment="Left" Height="100" Margin="10,10,0,0" VerticalAlignment="Top" Width="436" Tap="Show_ContactList_publicity"> 
       <TextBlock TextWrapping="Wrap" Text="Publicity" FontSize="36" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
      <Border BorderBrush="White" BorderThickness="3" HorizontalAlignment="Left" Height="100" Margin="10,10,0,0" VerticalAlignment="Top" Width="436" Tap="Show_ContactList_events"> 
       <TextBlock TextWrapping="Wrap" Text="Events" FontSize="36" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
      <Border BorderBrush="White" BorderThickness="3" HorizontalAlignment="Left" Height="100" Margin="10,10,0,0" VerticalAlignment="Top" Width="436" Tap="Show_ContactList_spons"> 
       <TextBlock TextWrapping="Wrap" Text="Marketing and Sponsorship" FontSize="36" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
      <Border BorderBrush="White" BorderThickness="3" HorizontalAlignment="Left" Height="100" Margin="10,10,0,0" VerticalAlignment="Top" Width="436" Tap="Show_ContactList_finance"> 
       <TextBlock TextWrapping="Wrap" Text="Finance" FontSize="36" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
     </StackPanel> 

相应的C#代码(contacts.xaml.cs)

[C#代码]

public contacts() 
    { 
     InitializeComponent(); 
     if (!isDarkTheme()) 
     { 
      StackPanel main_stack = StackContact_Viewer; 
      var borders = main_stack.Children.OfType<Border>(); 
      foreach (Border each in borders) 
      { 
       each.BorderBrush = new SolidColorBrush(Colors.Black); 
      } 
     } 
     else 
     { 
      StackPanel main_stack = StackContact_Viewer; 
      var borders = main_stack.Children.OfType<Border>(); 
      foreach (var each in borders) 
      { 
       each.BorderBrush = new SolidColorBrush(Colors.White); 
      } 

     } 

    } 
    private bool isDarkTheme() 
    { 
     return Visibility.Visible == (Visibility)Application.Current.Resources["PhoneDarkThemeVisibility"]; 
    } 

回答

1

如果你只是想你的边框颜色为黑色对于黑暗主题和白色对于浅色主题,则可以简单地将边框元素定义为

<Border BorderBrush="{StaticResource PhoneBackgroundBrush}" ... 

您不需要在构造函数中编写任何代码来更改颜色。

+0

其实我需要的光的主题,反之亦然反向黑色边框。所以PhoneBackgroundBrush在这里没有任何帮助。告诉我一些其他的方法。 – bytestorm

+0

哦,顺便说一句PhoneForegroundBrush做的工作,感谢您的想法@Kanishk – bytestorm

0

试试这个

XAML

<Border Name="border" BorderThickness="3"> 
    <TextBlock Text="General Secretaries Social and Cultural" /> 
</Border> 

C#

border.BorderBrush = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red); 
相关问题