【发布时间】:2013-04-15 12:45:05
【问题描述】:
总结:我需要从一个被定义为静态资源的模板的枢轴中检索一个按钮(以附加点击处理程序)。我该怎么做?
几个视图包含一个枢轴控件,这些枢轴的样式在 App.xaml 中定义为资源。
这是多页中用于 Pivot 的 XAML:
<phone:Pivot Title="Onaylar" Name="pivot" Style="{StaticResource MyPivotStyle}">
<phone:PivotItem Header="first pivot item">
<TextBlock Foreground="{StaticResource NavyTextColor}" Margin="10,0,0,0" Text="first pivot item"></TextBlock>
</phone:PivotItem>
<phone:PivotItem Header="second pivot item">
<TextBlock Foreground="{StaticResource NavyTextColor}" Margin="10,0,0,0" Text="second pivot item"></TextBlock>
</phone:PivotItem>
<phone:PivotItem Header="third pivot item">
<TextBlock Foreground="{StaticResource NavyTextColor}" Margin="10,0,0,0" Text="third pivot item"></TextBlock>
</phone:PivotItem>
</phone:Pivot>
这是在 App.xaml 中定义的枢轴样式(为方便起见缩短了):
<Style x:Key="MyPivotStyle" TargetType="phone:Pivot">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="phone:Pivot">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid CacheMode="BitmapCache" Grid.RowSpan="2">
<Grid.Background>
<ImageBrush ImageSource="/Assets/bg_header.png"/>
</Grid.Background>
</Grid>
<Grid Background="{TemplateBinding Background}" CacheMode="BitmapCache" Grid.Row="2" />
<ContentPresenter ContentTemplate="{TemplateBinding TitleTemplate}" Margin="24,17,0,-7">
<StackPanel Orientation="Horizontal">
<Image Source="/Assets/company_name.png" Width="213.75" HorizontalAlignment="Left" VerticalAlignment="Top" />
<Button HorizontalAlignment="Right" VerticalAlignment="Top" Margin="140,-20,0,35" BorderThickness="0" x:Name="btnHome">
<Image Source="/Assets/btnHome.png" Width="48" Height="48" ></Image>
</Button>
</StackPanel>
</ContentPresenter>
<controlsPrimitives:PivotHeadersControl x:Name="HeadersListElement" Foreground="White" Grid.Row="1"/>
<ItemsPresenter x:Name="PivotItemPresenter" Margin="{TemplateBinding Padding}" Grid.Row="2"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我想做的是这样的:
var myButton = GetButtonWithName("btnHome") as Button;
myButton.Click += Handler;
但是,我无法获得按钮。有什么解决办法吗?
【问题讨论】:
-
您应该使用命令绑定,而不是事件处理程序。
-
绑定解决了这个问题。谢谢。
标签: silverlight xaml windows-phone-8 windows-phone