【问题标题】:Attach Image/ImageBrush from code behind从后面的代码附加 Image/ImageBrush
【发布时间】:2016-01-13 13:55:41
【问题描述】:

我正在尝试添加一个图像作为用户控件的背景。根据变量的值,我需要更改该背景,但无论我使用什么路径或 Uri 格式,背景都不会改变。

我在 stackoverflow 中看到了很多问题,但没有一个能解决我的一个问题。 我让下面的代码:

            if (callback.liveUvis.ContainsUVI(uvi))
            {
                this.Status.Text = "LIVE";


                ImageBrush imgB = new ImageBrush();
                BitmapImage btpImg = new BitmapImage();                    
                btpImg.UriSource = new Uri(@"///IMG///Live///bck_frame_info_video_live.png", UriKind.Relative);
                //imgB.ImageSource = new BitmapImage(new Uri("~/IMG/Live/bck_frame_info_video_live.png", UriKind.RelativeOrAbsolute));
                //imgB.ImageSource = new BitmapImage(new Uri("ms-appx:///IMG/Live/bck_frame_info_video_live.png"));
                imgB.ImageSource = btpImg;
                this.Background = imgB;
            }

我在尝试附加图像时遇到了同样的问题...我想这也取决于 Uri 格式,但我也让代码以防万一:)

    private void setIcon_Desc(string dd)
    {
        try
        {
            Image img = new Image();
            img.Source = new BitmapImage(new Uri(this.BaseUri, "IMG/pictos_small/white/160dpi/" + dd + ".png"));
            img.Stretch = Stretch.None;
            this.Icon = img;
            this.Sport.Text = callback.disc.getDescription(dd).ToUpper();
        }
        catch(Exception ex)
        {
            callback.exception.writeExceptions(ex);
        }

    }

提前致谢!

【问题讨论】:

  • 图片是否包含在项目中?确保编译操作设置为“内容”
  • @KooKiz 是的,我在项目中有一个包含子文件夹和图像的文件夹(我知道在 Android 中,如果图像位于子文件夹中,则无法使用它们,我忽略它是否相同UWP...)。当您说“确保构建操作设置为‘内容’”时,您的意思是图像对吗?
  • 是的,在文件属性中(在Visual Studio的解决方案资源管理器中,在文件中右击,点击属性,应该有一个名为“Build Action”的文件)。如果构建操作设置为内容,那么您应该能够使用<Image Source="IMG/Live/bck_frame_info_video_live.png" /> 之类的东西打开文件(也就是说,如果您的图片位于“IMG”文件夹的“Live”子文件夹中)。使用Uri 对象时可能会有一些微妙之处,因此我建议首先使用我提供的代码直接从 XAML 尝试
  • 我已经检查了图像的构建操作是否设置为“内容”并且它是......问题是我必须从后面的代码中添加图像......我没有那里的选择:(但是我在其他页面中使用了图像,并且我已经能够从 XAML 添加它们,问题出在 CS 文件中
  • 好了,那我们就可以专注于uri格式了。您可能想试试这个:stackoverflow.com/a/9562069/869621 这是ms-appx 方案,但只有一个 /

标签: c# win-universal-app uwp windows-10-mobile


【解决方案1】:

我可以在更改用户控件的背景时重现您的问题。

我使用的当前解决方法是更改​​控件中根 UIElement 的背景。

<Grid x:Name="container">
    <Grid.Background>
        <ImageBrush Stretch="Fill" ImageSource="Images/bg-blue.png"/>
    </Grid.Background>
    <StackPanel>
        <TextBlock>Hello World</TextBlock>
        <Button Click="Button_Click">Change Background</Button>
        <Image x:Name="display"></Image>
    </StackPanel>
</Grid>

public sealed partial class MyUserControl : UserControl
{
    public MyUserControl()
    {
        this.InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ImageBrush imgB = new ImageBrush();

        BitmapImage btpImg = new BitmapImage();

        btpImg.UriSource = new Uri(@"ms-appx:///images/bg-light-blue.png");

        imgB.ImageSource = btpImg;

        container.Background = imgB;
    }
}

【讨论】:

  • 您是否将 Uri 更改为 new Uri("ms-appx:///IMG/Live/bck_frame_info_video_live.png")?
  • 是的!我已经解决了这两个问题。我已将图标作为背景作为您提出的解决方案:)
猜你喜欢
  • 1970-01-01
  • 2012-08-05
  • 2012-05-12
  • 1970-01-01
  • 2013-09-17
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多