在我关于“选择Hub中的元素”的研究中,我找到了this thread。在大多数情况下,FindChildControl函数适用于我,但不幸的是,这个函数似乎无法解决像Ellipses或Images这样的元素。 由于我是C#和UWP的初学者,有没有可能解决这些问题?
例如,这里有一些代码,应该解决“weatherSec”hub-section中的图像,但它仍然是null。
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;
问候 达达
答案 0 :(得分:0)
但遗憾的是,这个函数似乎无法解决像Ellipses或Images这样的元素。
我检查了你的演示并重现了这个问题。问题是您将OnLoaded
放在MainPage构造函数中,其中XAML尚未完全加载。所以你没有得到weatherSec
中的Image元素(实际上你不能在那里得到任何元素,而不仅仅是Image
或Eclipses
)。
要解决此问题,您需要将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();
}