DataTemplate中的Windows Phone 8按钮

时间:2014-06-26 10:47:01

标签: c# windows-phone-8

我正在使用Windows Phone 8应用程序。在DataTemplate中,我有两个文本块和按钮。 在第一个文本块中,我绑定了一个名字字段,在另一个文本块中,我尝试编写" hello world" (或其他一些字符串)当我点击按钮时。

我试着这样:

<ListBox x:Name="testListBox" HorizontalContentAlignment="Stretch">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <TextBlock Text="{Binding Name}" Margin="0,0,10,118"></TextBlock>
                            <TextBlock Text="{Binding test}" Margin="0,43,10,68"></TextBlock>
                            <Button Content="Test" Click="Button_Click" Margin="0,88,0,0"></Button>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>


    class DevicesClass
{
    public string test { get; set; }
    public string Name { get; set; }
}

private void devicesMethod(JObject bla)
    {

            List<DevicesClass> AllDevicesList = new List<DevicesClass>();

            foreach (JToken devices in bla["devices"])
            {
                DevicesClass AllDevices = new DevicesClass() { Name = devices["name"].ToString() };
                AllDevicesList.Add(AllDevices);
             }    
this.testListBox.ItemsSource = AllDevicesList;}


 private void Button_Click(object sender, RoutedEventArgs e)
    {
        light.test = "HelloWorld";
        DataContext = light;     
    }

当我点按按钮时没有任何反应。我想要一些建议如何做到这一点。

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

尝试获取TextBlock Element In DataTemplate&amp;设置其文本;

<ListBox x:Name="testListBox" HorizontalContentAlignment="Stretch">
     <ListBox.ItemTemplate>
          <DataTemplate>
               <Grid>
                     <TextBlock Text="{Binding Name}" Margin="0,0,10,118"></TextBlock>
                     <TextBlock Text="{Binding test}" Margin="0,43,10,68"></TextBlock>
                     <Button Content="Test" Click="Button_Click" Margin="0,88,0,0"></Button>
               </Grid>
          </DataTemplate>
     </ListBox.ItemTemplate>
</ListBox>

在你的活动中;

private void Button_Click(object sender, RoutedEventArgs e)
{
     var buttonElement = (Button)e.OriginalSource;
     var rootParent = (Grid)buttonElement.Parent;
     var yourTextBlock = (TextBlock)rootParent.Children.ElementAt(1);
     yourTextBlock.Text = "Hello, World!";
}

调试按钮事件处理程序&amp;看到你得到了正确的元素。 看看这是否有帮助。