- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
UserControl
。在那个 UserControl 里面 ==> 一个 ItemsControl
。
现在 ItemsControl
生成 Button 的
根据 ItemsSource
给它。我为这些按钮提供了一些样式。
==>按钮在 Pages.xaml
中。
==>和 DataPagerResourceDictionary.xaml
中的样式。
我在 Mainwindow.xaml
中使用了 UserControl
。但我无法根据按钮内容更改特定按钮的背景
。
您可以从 here 下载完整代码.
如果我不为按钮提供样式,下面的代码可以正常工作。
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;
}
}
我已经提供了样式到下面的代码片段中的按钮[看看独立的 Pages.xaml]。
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button x:Name="pageNumberButton" Style="{StaticResource TransparentButton}" Content="{Binding Path=Page_Number}"></Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
或者看看下面的代码:
MainWindow.xaml
<Window x:Class="StylingProblem.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:Local="clr-namespace:StylingProblem">
<Grid>
<Local:Pages x:Name="displayPages"></Local:Pages>
<Button Content="Change Color Button" Height="23" HorizontalAlignment="Left" Margin="149,164,0,0" Name="button1" VerticalAlignment="Top" Width="133" Click="button1_Click" />
</Grid>
</Window>
MainWindow.xaml.cs
public partial class MainWindow : Window
{
ObservableCollection<PageNumber> pageCollection = new ObservableCollection<PageNumber>();
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<PageNumber> 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 [用户控制]
<UserControl x:Class="StylingProblem.Pages"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
>
<UserControl.Resources>
<ResourceDictionary Source="DataPagerResourceDictionary.xaml"/>
</UserControl.Resources>
<Grid>
<ItemsControl Name="pageControl" ItemsSource="{Binding Path=PageCollection}">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<Border >
<StackPanel>
<ItemsPresenter></ItemsPresenter>
</StackPanel>
</Border>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel x:Uid="pageItemTemplate">
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button x:Name="pageNumberButton" Style="{StaticResource TransparentButton}" Content="{Binding Path=Page_Number}"></Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
按钮样式:DataPagerResourceDictionary.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Style TargetType="Button" x:Key="TransparentButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border CornerRadius="2,2,2,2" HorizontalAlignment="Center" x:Name="borderTemplate" Background="Transparent">
<ContentPresenter/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="borderTemplate" Property="Border.BorderBrush" Value="Gray" />
<Setter TargetName="borderTemplate" Property="Border.BorderThickness" Value="1" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="borderTemplate" Property="Border.BorderBrush" Value="Lime" />
</Trigger>
<Trigger Property="IsFocused" Value="true">
<Setter TargetName="borderTemplate" Property="Border.Background" Value="#FD7" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="borderTemplate" Property="Border.Background" Value="LightGray"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
谢谢......................................
最佳答案
您在样式中覆盖了按钮的模板,因此永远不会使用背景颜色
默认按钮模板如下所示:
<Button Background="SomeColor">
<Button.Content>
</Button>
你正在覆盖模板说
<Border>
<Button.Content>
</Border>
您需要将 Border 的背景色绑定(bind)到 {TemplateBinding Background}
,以便它使用 Button 的背景色。
我还建议使用 DataTrigger
而不是代码隐藏来更改按钮的背景颜色。
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Transparent" />
<Style.Triggers>
<DataTrigger Binding="{Binding }" Value="3">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
关于c# - 语法问题 : Can't Change BackGround Of Particular button?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6747709/
编辑:为了澄清,我想问的是:在什么情况下您会更喜欢一种语法而不是另一种语法? 有什么区别: .trigger('change') 和 .change() 两者都按预期工作。在任何情况下语法都会有所不同
这个问题在这里已经有了答案: Difference between .on('click') vs .click() (12 个答案) 关闭 6 年前。 有什么区别: $('选择器').change
我用的是Select2-4.0.0 和 $gameSelect.select2().on("change",function(e){....} 工作正常。 但是当我将它链接起来时('change')就
有一天在#haskell 上,有人提到了当字符串改变时字符串的类型应该如何改变的概念。这让我想起了我项目中的一些代码。它一直困扰着我,我说不清为什么。我现在推测,原因是我没有实现这个概念。这是下面的代
我使用了 .on("change") 事件函数,因为我的整个代码中有一部分是动态变化的。 .trigger("change") 在 .change() 中工作正常,但在 .on("change") 中
下面是一个非常简单的表单下拉列表设置。但是,on-change 事件拒绝触发...除非它更改为 ng-change。 这让我卡住了大约一个小时,因为我们在网站的其他地方使用了相同的设置(即模型属性/列
我有两个v-model 案例一: 这很好用 案例二: 即使改变 u1 也会触发 onDateChange(); 最佳答案 :change 绑定(bind)属性,如 v-bind:change=
我找到了 .and方法对于链接许多期望非常有用。 expect { click_button 'Update Boilerplate' @boilerplate_original.reload
出于合规性原因,我需要捕获所有数据库更改。我知道 Change Feed 存储此信息(并且我正在等待完全保真度来捕获删除)。目前,我一直在通过 Function 触发器读取 Change Feed 并
我添加了一个data-ng-change='getSubjectsClasswise(classBean.class_id);'上课标签,但主题未在主题 处加载标签。 一切看起来都很好,没有遇到问题
我有一组复选框,当您单击其中一个时,它们应该全部被选中。 当用户单击一个复选框时,它会检查以该类名称开头的所有其他复选框。我想要的是用户单击一个复选框,并且每次单击仅触发一次 $(".atpSelec
我在 Stack Overflow 上阅读了很多有关此问题的内容,并应用了所有建议的解决方案(getShell pack、布局、getparent 布局等...),但没有一个起作用。 我有一个带有文本
我想更改我的索引。我的数据框如下: partA = pd.DataFrame({'u1': 2, 'u2': 3, 'u3':4, 'u4':29, 'u5':4, 'u6':1, 'u7':323,
我有一个像这样的下拉菜单: Grade Year 旁边还有另一个下拉菜单: 3 4
这个问题已经有人问过,但我只停留在最基本的层面上。除了选择标记和尝试通过 jquery 捕获更改事件外,我没有向我的 html 添加任何内容。这是我的代码: $('#target').bin
我只是 Django 的新手几天。现在,当自定义表单中其他字段的值发生变化时,我需要同时更改一个字段中的值和表示形式。此时更改 MyModel 是受限。 我的应用程序/models.py: class
我正在使用 ListView 控件来显示一些数据行。有一个后台任务接收列表内容的外部更新。新收到的数据可能包含更少、更多或相同数量的项目,而且项目本身可能已更改。 ListView.ItemsSour
我在 android studio 中使用 git 插件。我的问题是当我提交更改列表(公开提交)时,但我在更改列表中的评论是错误的/丢失的,我想更改它。 问题: 有没有办法通过 AndroidStud
MyCustomObject * object=new MyCustomObject(); 假设我的许多类都使用了对象指针,但突然间我想在不更改地址的情况下更改指针的内容。 我认为 object =
我正在使用新的 KeyValue Observing。当变量发生变化时,我接到了我的观察者的电话,但 change struct 附带 newValue和 oldValue都为 nil ,所以它永远不
我是一名优秀的程序员,十分优秀!