SyleProblem:无法更改BackGround Of特定按钮?
- 我有一个==>
UserControl
。 -
在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
代替后面的代码来更改按钮的背景颜色。