UWP XAML ImageBrush.imageSource from networkshare

て烟熏妆下的殇ゞ 提交于 2019-12-24 03:43:02

问题


i edited my question:

i have a stack panel with buttons from array. now I want to set the Button Background from networkshare images.

here ist my source code:

XAML:

<Page
x:Class="App4.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App4"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" Height="1205.722" Width="2045.722">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="0,0,0,0">
    <StackPanel x:Name="sp" HorizontalAlignment="Left" Height="1070" Margin="10,10,0,0" VerticalAlignment="Top" Width="145" Padding="0" CornerRadius="10" RequestedTheme="Light" ScrollViewer.HorizontalScrollBarVisibility="Visible" Grid.RowSpan="2">
        <FlyoutBase.AttachedFlyout>
            <MenuFlyout/>
        </FlyoutBase.AttachedFlyout>
    </StackPanel>
</Grid>

Behind Code:

private void onLoad()
    {


        for (int i = 0; i < imgNames.Length; ++i)
        {
            ImageBrush brush1 = new ImageBrush();
            brush1.ImageSource = new BitmapImage(new Uri("ms-appx:///assets/" + imgNames[i]));
            Button button = new Button()
            {
                Content = string.Format(""),
            Tag = i
            };
            button.Width = 100;
            button.Height = 100;
            button.Background = brush1;
            button.Margin = new Thickness(0, 20, 0, 0);


            button.Click += new RoutedEventHandler(button_Click);   

            this.sp.Children.Add(button);


        }
    }

Thanks


回答1:


For loading image from network source you need to use these capabilities in your app

<Capabilities>
  <Capability Name="internetClient" />
  <Capability Name="privateNetworkClientServer" />
  <Capability Name="internetClientServer" />
  <uap:Capability Name="enterpriseAuthentication" />
</Capabilities>

and your image

<Image Name="YourImageElementName" />

and loading image in code behind

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(@"\\Your Image Full Path e.g user\folder\subfolder");
StorageFile file = await folder.GetFileAsync("ImageName.jpg");
using (var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
    BitmapImage bitmap = new BitmapImage();
    bitmap.SetSource(stream);
    YourImageElementName.Source = bitmap;
}

Github sample i created for this https://github.com/shubdragon/LoadNetworkImageRepo

Points need to noted

1) You need to set your network location in code and image name with required extension.

2) must share that location to homegroup.

3) Note code behind in different pages and Package.appxmanifes (view it as code in xml editor)



来源:https://stackoverflow.com/questions/47453463/uwp-xaml-imagebrush-imagesource-from-networkshare

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!