集线器控制窗口8.1内的访问控制

时间:2016-11-02 01:50:00

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

我有这段代码:

<HubSection x:Name="MyHub">
    <DataTemplate>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"></RowDefinition>
                <RowDefinition Height="200"></RowDefinition>
            </Grid.RowDefinitions>
            <Image x:Name="MYImage" Source="{Binding image}" Height="50" Width="60" VerticalAlignment="Center"/>
             <StackPanel Orientation="Vertical">
                <TextBlock TextWrapping="Wrap" Width="200" VerticalAlignment="Center" HorizontalAlignment="Left" Text="{Binding name}"/>
                <Button Content="Click me">
            </StackPanel>
        </Grid>
    </DataTemplate>
</HubSection>

但是我不知道如何访问文本块,我想在后面的代码中更改文本块的前景色。

1 个答案:

答案 0 :(得分:0)

XAML:

<Hub x:Name="myHub">
        <HubSection x:Name="myHubSection">
            <DataTemplate>
                <TextBlock x:Name="textbox1" Text="text" Width="300" Height="100">
                </TextBlock>
            </DataTemplate>
        </HubSection>
    </Hub>

代码背后:

 private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        var hub_section = FindVisualChildByName<HubSection>(this.myHub, "myHubSection");
        var text_box = FindVisualChildByName<WebView>(hub_section, "textbox1");
    }

    public static T FindVisualChildByName<T>(DependencyObject parent, string name)where T : DependencyObject

    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
        {
            var child = VisualTreeHelper.GetChild(parent, i);
            string controlName = child.GetValue(Control.NameProperty) as string;
            if (controlName == name)
            {
                return child as T;
            }
            else
            {
                T result = FindVisualChildByName<T>(child, name);
                if (result != null)
                    return result;
            }
        }
        return null;
    }

您可以参考How to access a Control inside the data template in C# Metro UI in the code behind

的更多详细信息