如何在Windows 8.1中访问HubSection内的控件

时间:2016-10-31 17:54:09

标签: c# json xaml windows-store-apps

我正在使用如下的HubSection:

<HubSection Header="Section1">
  <DataTemplate>
    <TextBox />
  </DataTemplate>
</HubSection>

<HubSection Header="Section1">
  <DataTemplate>
    <TextBox />
  </DataTemplate>
</HubSection>

<HubSection Header="Section1">
  <DataTemplate>
    <TextBox />
  </DataTemplate>
</HubSection>

现在我有了一个JSON,我想在其中绑定所有HubSection

中的文本框

以下是JSON数据的类:

class RootObject
{
    public string Text1 { get; set; }
    public string Text2 { get; set; }
    public string Text3 { get; set; }
}

现在根据this问题和this文章,我可以很好地使用Loaded的{​​{1}}事件,如下所示并设置值。

TextBox

但问题是,如果我在<TextBox Loaded="TextBox_Loaded" /> private void TextBox_Loaded(object sender, RoutedEventArgs e) { var txtBox = (TextBox)sender; txtBox.Text = "Some Text"; } 的每个内部都有更多的控件来绑定/访问,那就不好了。

有人可以告诉我是否有另一种简单的方法来绑定控件。

2 个答案:

答案 0 :(得分:0)

试试这个:

<强> C#:

在类后面的代码中(例如Page),您需要定义包含RootObject的属性。请注意,如果您想对此属性值的更改做出反应,则可能需要实现INotifyPropertyChanged

public Page1 : Page {
    public RootObject RootObject { get; set; }
}

<强> XAML:

在您的XAML中,您应该只使用绑定到RootObject的属性,如下所示:

<HubSection Header="Section1">
  <DataTemplate>
    <TextBox Text="{Binding RootObject.Text1}" />
  </DataTemplate>
</HubSection>

<HubSection Header="Section2">
  <DataTemplate>
    <TextBox Text="{Binding RootObject.Text2}"/>
  </DataTemplate>
</HubSection>

答案 1 :(得分:0)

希望这有助于

<强> C#

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        RootObject ro = new RootObject() {Text1 = "Header1JsonData",Text2= "Header2JsonData",Text3= "Header3JsonData"};
        this.DataContext = ro;

    }
}

public class RootObject
{
    public string Text1 { get; set; }
    public string Text2 { get; set; }
    public string Text3 { get; set; }
}

}

<强> XAML

   <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Hub >
        <HubSection Header="Section1">
            <DataTemplate>
                <TextBox  Text="{Binding Text1}"/>
            </DataTemplate>
        </HubSection>
        <HubSection Header="Section1">
            <DataTemplate>
                <TextBox Text="{Binding Text2}"/>
            </DataTemplate>
        </HubSection>
        <HubSection Header="Section1">
            <DataTemplate>
                <TextBox  Text="{Binding Text3}"/>
            </DataTemplate>
        </HubSection>
    </Hub>
</Grid>

<强>输出

enter image description here