【问题标题】:Get button in Pivot Header programatically in Windows Phone 8在 Windows Phone 8 中以编程方式获取 Pivot Header 中的按钮
【发布时间】: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


【解决方案1】:

我认为主要问题是如何在模板中找到控件。

所以我认为这个链接可以帮助你:

How to get Control from DataTemplate to ControlTemplate ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    相关资源
    最近更新 更多