Windows phone 7 XAML中的按钮样式
我以这种方式自定义了按钮:Windows phone 7 XAML中的按钮样式,windows-phone-7,xaml,expression-blend,Windows Phone 7,Xaml,Expression Blend,我以这种方式自定义了按钮: <Button BorderBrush="Transparent" Name="DialButton" Click="DialButton_Click" > <StackPanel Orientation="Horizontal"> <TextBlock FontSize="43" Name="lblNumber" Margin="0,-5,0,0" />
<Button BorderBrush="Transparent" Name="DialButton" Click="DialButton_Click" >
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="43" Name="lblNumber" Margin="0,-5,0,0" />
<TextBlock FontSize="12" Margin="5,20,0,0" Name="lblCharacter" />
</StackPanel>
</Button>
现在,当用户按下按钮时,我希望OnPress状态改变标签的颜色。我可以这样做,如果它是一个简单的按钮,通过改变按下的状态。但是我的标签放在一个堆栈面板中。在这种情况下,我如何更改颜色?或者在哪种情况下,我可以从C#更改标签的颜色。您需要将其转换为自定义控件,然后您可以根据状态管理每个组件的样式。在按钮的单击事件中尝试此操作
Button butClicked = (Button)sender;
StackPanel panel1 = (StackPanel)butClicked.Content;
var child1Panel1 = panel1.Children[0] as TextBlock;
child1Panel1.Foreground = new SolidColorBrush(Color.FromArgb(255, 18, 18, 18));
如果只想使用此按钮一次,最简单的方法可能是在Expression Blend中打开.xaml文件,然后使用Blend自定义按钮(包括状态更改)。如果在多个位置使用按钮,请按照Matt的建议进行操作,并将其设置为可重用的自定义控件(也可以使用Blend进行设计)。在此类情况下,可以使用PropertyChangeAction。您可以在Expression Blend中“资产”选项卡上的“行为”类别中找到此选项 在标签上应用此操作。将trigger属性更改为DataTrigger,而不是默认的EventTrigger。将触发器绑定到DialButton的IsPressed属性。为每个文本块添加两个PropertyChangeActions,并将其中一个的值设置为true,另一个设置为false 下面是其中一个例子。另一个完全一样
<TextBlock FontSize="43" x:Name="lblNumber" Margin="0,-5,0,0" Text="25">
<i:Interaction.Triggers>
<ec:DataTrigger Binding="{Binding IsPressed, ElementName=DialButton}" Value="true">
<ec:ChangePropertyAction PropertyName="Foreground">
<ec:ChangePropertyAction.Value>
<SolidColorBrush Color="Red"/>
</ec:ChangePropertyAction.Value>
</ec:ChangePropertyAction>
</ec:DataTrigger>
<ec:DataTrigger Binding="{Binding IsPressed, ElementName=DialButton}" Value="false">
<ec:ChangePropertyAction PropertyName="Foreground">
<ec:ChangePropertyAction.Value>
<SolidColorBrush Color="{StaticResource PhoneForegroundColor}"/>
</ec:ChangePropertyAction.Value>
</ec:ChangePropertyAction>
</ec:DataTrigger>
</i:Interaction.Triggers>
</TextBlock>
我已经创建了这个用户控件。但我无法理解如何根据状态设置每个组件的样式。添加动画以在状态更改时更改所需的属性(按名称引用控件)。您将在应用于控件的默认系统中看到这方面的示例。在这里,我可以改变我的标签颜色。ThanksHi Alfah,实际上它不会作为一次单击事件工作,而是在单击事件时执行。正如我告诉你们的,我的要求是当按钮进入按下状态时,我的标签颜色会改变。一经发布,一切正常。无论如何,谢谢你,谢谢你。最后,这是我正在寻找的解决方案。:)
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:ec="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"