Changing/Updating 图片在 XAML
Changing/Updating Image in XAML
我在 Xamarin UWP 应用程序中更新图像时遇到问题。首先,我想说我在这个问题上看到了多个其他线程,但是 none 已经能够解决我的困境并且很多 非常 已经过时了。
这是我的场景:我正在使用三个图像,分别命名为 green.png、red.png 和 gray.png。我在我的 Xamarin 应用程序中显示一个图像,并且根据我关联的 .cs 文件中调用的特定浮点数,我想将图像更改为另一种颜色。因此,例如,如果浮点数低于 15,我希望图像为红色。
这是我目前显示我的图片的方式没有更改它们的代码,即这段代码工作正常并且我的图片出现在应用程序中:
<Image Source="{pages:ImageResource BLE.Client.Pages.red.png}" Opacity="0.6"/>
它们当前存储在与 XAML 文件本身相同的目录中。我知道 Android 上有一个 Resources 文件夹,但我没有看到 UWP 的任何等效项,所以我以这种方式加载我的图像。
我尝试基于另一个 post 执行此操作的方法是:
<Image Source="{Binding HeadColor, StringFormat='pages:ImageResource BLE.Client.Pages.\{0\}.png', Mode=TwoWay}" Opacity="0.6"/>
这应该起作用的方式取决于我的浮点数的值,我在我的 .cs 文件中使用了字符串 HeadColor 并对其执行了 OnPropertyChanged。它总是包含字符串“green”、“red”或“gray”,并且使用这种方法它应该将自己插入到图像位置字符串中。然而,这不起作用。
作为参考,以下是我在 .cs 文件中更新 HeadColor 字符串的方法:
private string _HeadColor;
public string HeadColor {get => _HeadColor; set {_HeadColor = value; OnPropertyChanged("HeadColor");}}
...
if (SensorAvgValue > 15) {_HeadColor = "green";}
else {_HeadColor = "red";}
RaisePropertyChanged(() => HeadColor);
我也尝试过使用 IValueConverter,但这也不起作用。
所以,总而言之,我的问题是如何最好地动态更改我想使用的图像。它们都具有相同的维度和相同的目录,唯一的区别是它们的名称“green.png”、“red.png”和“gray.png”。有没有更好的方法来 call/load 图片?
谢谢!
这对我来说适用于 iOS - 我没有要测试的 UWP 环境,但它应该可以正常工作。我的 iOS 资源
中有两张图片“reddot.png”和“greendot.png”
<StackLayout Padding="20,50,20,50">
<Image Source="{Binding HeadColor, StringFormat='\{0\}dot.png'}" Opacity="0.6"/>
<Button Clicked="ChangeColor" Text="Click!!" />
</StackLayout>
code-behind
public partial class MainPage : ContentPage, INotifyPropertyChanged
{
private string headColor = "red";
public string HeadColor
{
get
{
return headColor;
}
set
{
headColor = value;
OnPropertyChanged();
}
}
public MainPage()
{
InitializeComponent();
this.BindingContext = this;
}
protected void ChangeColor(object sender, EventArgs args)
{
if (HeadColor == "red")
{
HeadColor = "green";
}
else
{
HeadColor = "red";
}
}
}
我在 Xamarin UWP 应用程序中更新图像时遇到问题。首先,我想说我在这个问题上看到了多个其他线程,但是 none 已经能够解决我的困境并且很多 非常 已经过时了。
这是我的场景:我正在使用三个图像,分别命名为 green.png、red.png 和 gray.png。我在我的 Xamarin 应用程序中显示一个图像,并且根据我关联的 .cs 文件中调用的特定浮点数,我想将图像更改为另一种颜色。因此,例如,如果浮点数低于 15,我希望图像为红色。
这是我目前显示我的图片的方式没有更改它们的代码,即这段代码工作正常并且我的图片出现在应用程序中:
<Image Source="{pages:ImageResource BLE.Client.Pages.red.png}" Opacity="0.6"/>
它们当前存储在与 XAML 文件本身相同的目录中。我知道 Android 上有一个 Resources 文件夹,但我没有看到 UWP 的任何等效项,所以我以这种方式加载我的图像。
我尝试基于另一个 post 执行此操作的方法是:
<Image Source="{Binding HeadColor, StringFormat='pages:ImageResource BLE.Client.Pages.\{0\}.png', Mode=TwoWay}" Opacity="0.6"/>
这应该起作用的方式取决于我的浮点数的值,我在我的 .cs 文件中使用了字符串 HeadColor 并对其执行了 OnPropertyChanged。它总是包含字符串“green”、“red”或“gray”,并且使用这种方法它应该将自己插入到图像位置字符串中。然而,这不起作用。
作为参考,以下是我在 .cs 文件中更新 HeadColor 字符串的方法:
private string _HeadColor;
public string HeadColor {get => _HeadColor; set {_HeadColor = value; OnPropertyChanged("HeadColor");}}
...
if (SensorAvgValue > 15) {_HeadColor = "green";}
else {_HeadColor = "red";}
RaisePropertyChanged(() => HeadColor);
我也尝试过使用 IValueConverter,但这也不起作用。
所以,总而言之,我的问题是如何最好地动态更改我想使用的图像。它们都具有相同的维度和相同的目录,唯一的区别是它们的名称“green.png”、“red.png”和“gray.png”。有没有更好的方法来 call/load 图片?
谢谢!
这对我来说适用于 iOS - 我没有要测试的 UWP 环境,但它应该可以正常工作。我的 iOS 资源
中有两张图片“reddot.png”和“greendot.png”<StackLayout Padding="20,50,20,50">
<Image Source="{Binding HeadColor, StringFormat='\{0\}dot.png'}" Opacity="0.6"/>
<Button Clicked="ChangeColor" Text="Click!!" />
</StackLayout>
code-behind
public partial class MainPage : ContentPage, INotifyPropertyChanged
{
private string headColor = "red";
public string HeadColor
{
get
{
return headColor;
}
set
{
headColor = value;
OnPropertyChanged();
}
}
public MainPage()
{
InitializeComponent();
this.BindingContext = this;
}
protected void ChangeColor(object sender, EventArgs args)
{
if (HeadColor == "red")
{
HeadColor = "green";
}
else
{
HeadColor = "red";
}
}
}