UWP 基于可绑定值 属性 动态显示图像
UWP Show Image Dynamically Based on a Value of a Bindable Property
我正在尝试了解绑定和转换器的工作原理,但我正在努力
如何根据名为 Status 的可分类 属性 将图像绑定到 ViewCell?
例如:
- 如果我的状态 = "X",显示图片 1
- 如果我的 Status = "Y",显示 Image2
- 如果我的 Status = "Z",显示 Image3
我有一个图像,其源设置为状态 属性,如下所示,但这不起作用,图像未显示。我的猜测是我需要编写一个转换器以某种方式将状态值转换为图像
<Image x:Name="StatusIcon" Source="{Binding Status}"/>
我的图像位于 UWP 项目根目录中,如果我这样做:
<Image x:Name="StatusIcon" Source="ms-appx:///Image1.png" />
,然后我的图像将正确显示,但我需要它根据状态动态更改 属性。
你是对的。您需要使用转换器将字符串转换为相应的图像。
这是一个示例代码
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
switch (value as string)
{
case "X":
return new BitmapImage(new Uri("ms-appx:///Image1.png"));
case "Y":
return new BitmapImage(new Uri("ms-appx:///Image2.png"));
case "Z":
return new BitmapImage(new Uri("ms-appx:///Image3.png"));
default:
return new BitmapImage(new Uri("ms-appx:///Default.png"));
}
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
我正在尝试了解绑定和转换器的工作原理,但我正在努力
如何根据名为 Status 的可分类 属性 将图像绑定到 ViewCell?
例如:
- 如果我的状态 = "X",显示图片 1
- 如果我的 Status = "Y",显示 Image2
- 如果我的 Status = "Z",显示 Image3
我有一个图像,其源设置为状态 属性,如下所示,但这不起作用,图像未显示。我的猜测是我需要编写一个转换器以某种方式将状态值转换为图像
<Image x:Name="StatusIcon" Source="{Binding Status}"/>
我的图像位于 UWP 项目根目录中,如果我这样做:
<Image x:Name="StatusIcon" Source="ms-appx:///Image1.png" />
,然后我的图像将正确显示,但我需要它根据状态动态更改 属性。
你是对的。您需要使用转换器将字符串转换为相应的图像。
这是一个示例代码
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
switch (value as string)
{
case "X":
return new BitmapImage(new Uri("ms-appx:///Image1.png"));
case "Y":
return new BitmapImage(new Uri("ms-appx:///Image2.png"));
case "Z":
return new BitmapImage(new Uri("ms-appx:///Image3.png"));
default:
return new BitmapImage(new Uri("ms-appx:///Default.png"));
}
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}