没有DataTemplate的HubSection(或者你可以在HubSection中有一个表单)?

时间:2015-02-21 00:32:52

标签: c# xaml windows-store-apps windows-phone-8.1

移植iOS应用程序,我可能正在滥用集线器控件;但我有一个非常简单的应用程序,我喜欢一个表单在一个中心部分。但是它似乎必须包装在DataTemplate中,一旦它的形式,TextBox控件就不会显示在C#文件后面的代码中?

<HubSection x:Uid="HubSection1" Header="SETTINGS"
                    DataContext="{Binding Groups[2]}" HeaderTemplate="{ThemeResource HubSectionHeaderTemplate}">
            <DataTemplate>
                <StackPanel VerticalAlignment="Top" Margin="0,0,20,0">
                    <TextBlock Text="api base uri" FontSize="21" TextWrapping="NoWrap"/>
                    <TextBox Name="apiBaseUriTextBox" Margin="0,0,0,10" TextWrapping="Wrap" PlaceholderText="api base uri" VerticalAlignment="Stretch"/>
                    <TextBlock Text="api key" FontSize="21" TextWrapping="NoWrap" Margin="0,0,0,10"/>
                    <TextBox Name="apiKeyTextBox" Margin="0,0,0,10" TextWrapping="Wrap" PlaceholderText="api key" VerticalAlignment="Stretch"/>
                    <TextBlock Text="api secret" FontSize="21" TextWrapping="NoWrap"/>
                    <TextBox Name="apiSecretTextBox" Margin="0,0,0,10" TextWrapping="Wrap" PlaceholderText="api secret" VerticalAlignment="Stretch"/>
                    <Button Click="SettingsSaveClickHandler" 
                        Content="Save" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,20,0,0"/>
                </StackPanel>
            </DataTemplate>
        </HubSection>

1 个答案:

答案 0 :(得分:1)

如果要将表单直接放在HubSection的DataTemplate中,那么访问值的最佳方法是通过data binding DataBox中的TextBoxes属性。另一种选择是通过从按钮的SettingsSaveClickHandler

调用VisualTreeHelper来抓取可视树。

另一种选择是将表单创建为UserControl,然后在HubSection的DataTemplate中托管已完成的表单。同样,您可以将其绑定到DataContext以连接到基础数据。