0
インターネットの深さから1日を検索した後、私はあなたに直接お尋ねします。CommandBar内でイメージのソースを動的に変更するにはどうすればよいですか?
私はWindows 10 UWP AppをC#で作成しました。私は無線LAN接続の強さを見せたいと思います。私はこれを示すいくつかの画像を持っています。 Wi-Fiの強さはTopAppBarに表示する必要があります。
MVVMを使用してイメージソースを設定しました。それはUserControl内のイメージのために正常に動作しますが、CommandBarにイメージを表示することができません。
実際の画像のウリ(「画像」)を私に与えるイベントがあります。
private void WiFiInformationUpdated(object sender, WiFiInformationEventArgs args)
{
if (args.SSID != _viewModel.WifiInformationData.SSID)
{
_viewModel.WifiInformationData.SSID = args.SSID;
}
if (args.SignalBars != _viewModel.WifiInformationData.SignalBars)
{
_viewModel.WifiInformationData.SignalBars = args.SignalBars;
}
if(args.Picture != null)
{
Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() =>
{
var pic = new BitmapImage(args.Picture);
_viewModel.WifiInformationData.Picture = pic;
}
);
}
}
それは、ユーザーコントロール内正常に動作場所です:
<UserControl.DataContext>
<Binding Path="Main" Source="{StaticResource Locator}"/>
</UserControl.DataContext>
<Image Source="{Binding WifiInformationData.Picture}" Grid.Row="1" Grid.Column="2" DataContextChanged="Image_DataContextChanged"/>
、これは問題のシーンです:
<Page.DataContext>
<Binding Path="Main" Source="{StaticResource Locator}"/>
</Page.DataContext>
<Page.TopAppBar>
<CommandBar HorizontalContentAlignment="Center" IsOpen="True" IsSticky="True" CompositeMode="Inherit">
<CommandBar.ContentTemplate>
<DataTemplate>
<RelativePanel VerticalAlignment="Stretch" Width="200" >
<Image Source="{Binding Main.WifiInformationData.Picture, Source={StaticResource Locator}}" Width="20" RelativePanel.Below="tbPercentWifi" DataContextChanged="Image_DataContextChanged"/>
</RelativePanel>
</DataTemplate>
</CommandBar.ContentTemplate>
</CommandBar>
</Page.TopAppBar>
何か提案してください?
あなたは 'みましたUpdateLayout() 'を呼び出すか、Layoutを無効にしますか? –
私はしませんでしたが、...私は自分自身で解決策を見つけました:-) –