【问题标题】:Windows Phone 8.1 gridviewWindows Phone 8.1 网格视图
【发布时间】:2015-06-04 09:43:43
【问题描述】:

如何在网格视图中创建一个堆栈面板,其中堆栈面板中的各种元素响应不同的点击事件?

stackpanel 将包含 2 个 appbarbutton,每个 appbarbutton 都有一个文本块,该文本块会根据点击次数增加...

        <GridView ItemsSource={Binding}>
        <GridView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <StackPanel Orientation="Vertical">
                        <StackPanel Orientation="Horizontal">
                            <AppBarButton Icon="Like"
                          Name="like"
                          IsCompact="True"
                          Click="like_Click"/>
                            <TextBlock Name="numOfLike"
                       Text="{Binding No_Positive_Likes}"/>
                        </StackPanel>
                        <StackPanel Orientation="Horizontal">
                            <AppBarButton Icon="Dislike"
                          Name="dislike"
                          IsCompact="True"
                          Click="dislike_Click"/>
                            <TextBlock Name="numOfDisLike"
                       Text="{Binding No_negative_Likes}"/>
                        </StackPanel>
                    </StackPanel>
                    <StackPanel Orientation="Vertical"
                    Tapped="loadQuestionAnswer_Click">
                        <TextBlock Name="question"
                       Text="What is my name"
                       FontSize="30"/>
                        <TextBlock Text="2013-12-10"/>
                    </StackPanel>

                </StackPanel>

            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

【问题讨论】:

  • 请添加一些示例代码
  • 一般用DataTemplate,但不清楚你到底想达到什么。 AppBarButtons 应该属于 AppBar..
  • @MitanShah 我已经更新了问题......
  • @Filip 我已经更新了问题......
  • 还有什么问题?您可以在事件中使用发件人上的 DataContext 获取点击的 Grid 项目。

标签: c# xaml windows-phone-8.1


【解决方案1】:

我使用 BehaviorsSDK 处理了同样的场景。此 SDK 添加了为事件调用函数的功能,让生活变得轻松。只需在您的项目中添加对 BehaviorsSDK 的引用,然后为每个事件向您的项目数据类添加一个方法。这是一个例子:

ObservableCollection<ItemModel> Items;

public class ItemModel
{
    public bool No_Positive_Likes ... 
    public bool No_Negative_Likes ...

    public void LikeButtonPressed()
    {
        ...
    }
    public void DislikeButtonPressed()
    {
        ...
    }
}

然后在你的 xamll 中:

    xmlns:i="using:Microsoft.Xaml.Interactivity"
    xmlns:core="using:Microsoft.Xaml.Interactions.Core"
    ...

    <GridView ItemsSource={Binding}>
    <GridView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <StackPanel Orientation="Vertical">
                    <StackPanel Orientation="Horizontal">
                        <AppBarButton Icon="Like"
                            Name="like"
                            IsCompact="True">
                            <i:Interaction.Behaviors>
                                <core:EventTriggerBehavior EventName="Click">
                                    <core:CallMethodAction TargetObject="{Binding Mode=OneWay}" MethodName="LikeButtonPressed"/>
                                </core:EventTriggerBehavior>
                            </i:Interaction.Behaviors>
                        </AppBarButton>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2015-01-21
    相关资源
    最近更新 更多