在UWP-Hub中选择元素

本文关键字:元素 选择 UWP-Hub | 更新日期: 2023-09-27 18:14:27

在我的研究中关于"在Hub中选择元素",我发现了这个线程。FindChildControl函数在大多数情况下对我有效,但不幸的是,这个函数似乎不能处理像Ellipses或Images这样的元素。由于我是c#和UWP的初学者,是否有可能解决这些问题?

例如,这里有一段代码,它应该在"weatherSec"中心部分内处理图像,但它仍然是空的。

        Image ResImage = FindChildControl<Image>(weatherSec, "ResultImage") as Image;
        TextBlock ResultTextBlock = FindChildControl<TextBlock>(weatherSec, "ResultTextBlock") as TextBlock;
        //var position = await LocationManager.GetPosition();
        RootObject myWeather =
            await OpenWeatherMapProxy.GetWeather(
                51.43,
                6.75);
        string icon = String.Format("ms-appx:///Assets/Weather/{0}.png", myWeather.weather[0].icon);
        ResImage.Source = new BitmapImage(new Uri(icon, UriKind.Absolute));
        ResultTextBlock.Text = myWeather.name + " - " + ((int)myWeather.main.temp).ToString() + "°C - " + myWeather.weather[0].description;

问候达达

在UWP-Hub中选择元素

,但不幸的是,这个函数似乎不能处理像Ellipses或Images这样的元素。

我检查了你的演示并重现了这个问题。问题是您将OnLoaded放置在MainPage构造函数中,其中XAML尚未完全加载。所以你没有在weatherSec中获得Image元素(实际上你不能在那里获得任何元素,不仅仅是ImageEclipses)。

要解决这个问题,您需要将Onloaded放入MainPage.Loaded中,如下所示:

public MainPage()
{
    this.InitializeComponent();
    InitGPIO();
    this.Loaded += MainPage_Loaded;// add event
    //OnLoaded(); //comment out this line, the xaml hasn't been fully loaded
}
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    OnLoaded();
}