我正在尝试在XAML设计中显示存储在本地目录中的图像。
我有本地图像的路径。
ImagePage.xaml
<ScrollViewer>
<ListView x:Name="ViewImage" SelectionMode="None" IsActiveView="True">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="1" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid x:Name="imgGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel>
<Grid Height="50" Width="50">
<Grid Margin="2" Background="red">
<Image Source="{Binding imgArt}" Stretch="UniformToFill"
Height="40" Width="40"/>
</Grid>
</Grid>
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollViewer>
ImagePage.xaml.cs
string strImgPath = "ms-appx:///Images/Music/localImg.png";
public string imgPath
{
get { return strImgPath; }
}
imageClaz obj = new imageClaz();
obj.imgArt = imgPath;
imageClaz()
public class imageClaz
{
public string imgArt { get; set; }
}
答案 0 :(得分:4)
关于 BitmapImage 的两个答案都只是部分正确。事实上,XAML有一个内置转换器,除非你提供转换器,否则你肯定可以传递一个字符串。您的代码中可能存在一些问题:
您没有通知UI有关该属性的更改 - 缺少 INotifyPropertyChanged :
示例:
public sealed partial class MainPage : Page, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string name)
{
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
private string imgArt;
public string ImgArt
{
get { return imgArt; }
set { imgArt = value; OnPropertyChanged("ImgArt"); }
}
第二件事 - 我不确定你是否设置了图像或其父母的 DataContext :
public MainPage()
{
this.InitializeComponent();
DataContext = this;
}
您可以download from GitHub的示例。
答案 1 :(得分:1)
如果您要定位WinRT应用,则应使用Windows.UI.Xaml.Media.Imaging.BitmapImage。
只需将imgArt froms字符串更改为BitmapImage
即可public class imageClaz
{
public BitmapImage imgArt { get; set; }
}
并像这样设置图像,
string strImgPath = "ms-appx:///Images/Music/localImg.png";
imageClaz obj = new imageClaz();
obj.imgArt = new BitmapImage(new Uri(strImgPath, UriKind.Absolute));
答案 2 :(得分:1)
Source的类型为ImageSource,而不是字符串。您可以使用以下内容设置视图模型:
public class ImageClaz
{
public ImageClaz(Uri uri)
{
this.ImgArt = new BitmapImage(uri);
}
public ImageSource ImgArt { get; set; }
}
使用路径创建Uri:
var imgeClass = new ImageClaz(new Uri("ms-appx:///Images/Music/localImg.png"));