在XAML代码中编写条件语句

13 silverlight xaml conditional-statements windows-phone-7

我有这个listBox被填充,每个项目可以是男性或女性,取决于绑定到listBox的'SEX'属性.(男性可以是"M",女性可以是"F")......

对于每个项目,我想根据列表项SEX属性显示男性或女性符号.

例如,如果"{Binding SEX}"等于'M':

<Image Source="../Images/male48.png" Visibility="Visible" />
Run Code Online (Sandbox Code Playgroud)

如果"{Binding SEX}"等于'F':

<Image Source="../Images/female48.png" Visibility="Visible" />
Run Code Online (Sandbox Code Playgroud)

我到底该如何才能让它发挥作用?

Col*_*inE 17

解决此问题的常见方法是创建值转换器,这会将绑定返回的值转换为与UI控件的属性相关的其他值.

您可以创建一个转换器来获取性别并将其映射到图像源:

public class SexToSourceConverter : IValueConverter
{
  public object Convert(object value, string typeName, object parameter, string language)
  {
     string url = ((string)value == "M") ? "../Images/male48.png" :  "../Images/female48.png";
    return new BitmapImage(new Uri(url , UriKind.Relative));
  }

  public object ConvertBack(object value, string typeName, object parameter, string language)
  {
    throw new NotImplementedException();
  }
}
Run Code Online (Sandbox Code Playgroud)

在您的XAML中使用它如下:

<Image Source="{Binding Path=Sex, Converter={StaticResource SexToSourceConverter }" />
Run Code Online (Sandbox Code Playgroud)


Dan*_*rod 2

使用绑定转换器或使用两个触发器

对于 Siverlight,这是正确的 IValueConverter 链接,我不确定是否支持触发器。