SyleProblem:无法更改BackGround Of特定按钮?

  1. 我有一个==> UserControl
  2. 在UserControl里面==> One ItemsControl

    现在ItemsControl根据ItemsSource生成Button's 。 我为这些按钮提供了一些风格。

    ==>按钮在Pages.xaml

    ==>和DataPagerResourceDictionary.xaml Style。

我在Maindwindow.xaml使用了UserControl 。 但我无法根据Button内容更改特定按钮Background

您可以从 此处 下载完整代码

如果我没有为按钮提供样式,下面的代码工作正常。

 for (int i = 0; i < displayPages.pageControl.Items.Count; i++) { var container = displayPages.pageControl.ItemContainerGenerator.ContainerFromIndex(i) as ContentPresenter; var button = container.ContentTemplate.FindName("pageNumberButton", container) as Button; if (button.Content == " 3 ") { button.Background = Brushes.Red; } } 

在下面的代码片段中为按钮提供了样式 [看看insdie Pages.xaml ]。

      

或者看看下面的代码:

MainWindow.xaml

    

MainWindow.xaml.cs

 public partial class MainWindow : Window { ObservableCollection pageCollection = new ObservableCollection(); public MainWindow() { InitializeComponent(); pageCollection.Add(new PageNumber(" 1 ")); pageCollection.Add(new PageNumber(" 2 ")); pageCollection.Add(new PageNumber(" 3 ")); pageCollection.Add(new PageNumber(" 4 ")); pageCollection.Add(new PageNumber(" 5 ")); pageCollection.Add(new PageNumber(" 6 ")); this.DataContext = this; } public ObservableCollection PageCollection { get { return this.pageCollection; } set { this.pageCollection = value; } } private void button1_Click(object sender, RoutedEventArgs e) { //Chage Color of Perticular button here //Suppose say change the color of button with content == " 3 " #region -- THIS CODE WORKS FINE IF I DON'T PROVIDE ANY STYLE TO BUTTON [see Pages.xaml] -- for (int i = 0; i < displayPages.pageControl.Items.Count; i++) { var container = displayPages.pageControl.ItemContainerGenerator.ContainerFromIndex(i) as ContentPresenter; var button = container.ContentTemplate.FindName("pageNumberButton", container) as Button; if (button.Content == " 3 ") { button.Background = Brushes.Red; } } #endregion } 

Pages.xaml [用户控制]

                             

STYLE OF BUTTON:DataPagerResourceDictionary.xaml

                             

谢谢……………………………..

您正在覆盖样式中的Button模板,因此背景颜色永远不会被使用

默认按钮模板如下所示:

  

而你正在覆盖模板说

    

您需要将Border的背景颜色绑定到{TemplateBinding Background}以便它使用Button的背景颜色。

我还建议使用DataTrigger代替后面的代码来更改按钮的背景颜色。