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"