Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 在XAML代码中编写条件语句_Silverlight_Windows Phone 7_Xaml_Conditional Statements - Fatal编程技术网

Silverlight 在XAML代码中编写条件语句

Silverlight 在XAML代码中编写条件语句,silverlight,windows-phone-7,xaml,conditional-statements,Silverlight,Windows Phone 7,Xaml,Conditional Statements,我有一个填充的列表框,根据绑定到列表框的“SEX”属性,每个项目可以是男性或女性。(男性可以是“M”,女性可以是“F”) 对于每个项目,我想根据列表项目的性别属性显示一个男性或女性符号 例如,如果“{Binding SEX}”等于'M': <Image Source="../Images/male48.png" Visibility="Visible" /> 如果“{Binding SEX}”等于'F': <Image Source="../Images/female48

我有一个填充的列表框,根据绑定到列表框的“SEX”属性,每个项目可以是男性或女性。(男性可以是“M”,女性可以是“F”)

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

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

<Image Source="../Images/male48.png" Visibility="Visible" />

如果“{Binding SEX}”等于'F':

<Image Source="../Images/female48.png" Visibility="Visible" />

我要怎样才能让它工作呢?

要么使用a,要么使用两个


对于Siverlight,我不确定是否支持触发器。

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

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

公共类SexToSourceConverter:IValueConverter
{
公共对象转换(对象值、字符串类型名、对象参数、字符串语言)
{
字符串url=((字符串)值==“M”)?“./Images/male48.png”:“./Images/female48.png”;
返回新的位图图像(新的Uri(url,UriKind.Relative));
}
公共对象转换回(对象值、字符串类型名、对象参数、字符串语言)
{
抛出新的NotImplementedException();
}
}
在XAML中使用它,如下所示:

<Image Source="{Binding Path=Sex, Converter={StaticResource SexToSourceConverter }" />

如果有人对这项技术的工作方式感兴趣,我已经根据科林的回答提出了一个解决方案。首先,您必须创建一个新类,其中包含要添加到XAML代码中的条件:

公共类MyNiceConverterName:IValueConverter{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性){
//你在这里的条件!
返回值\u您希望\u返回;//例如,字符串、整数等
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性){
抛出新的NotImplementedException();//像这样保留这个,不要担心
}
}
调用该类(现在称为
MyNiceConverterName
),并使用要添加到XAML文件的条件实现
Convert()
方法。记住将
对象值
强制转换为您正在使用的类型(例如,
(int)值,如果它是整数)

这差不多完成了!但还没有,首先在XAML中将转换器声明为资源。您可以将此代码粘贴到名称空间声明下面:

<Control.Resources>
    <converter:MyNiceConverterName xmlns:converter="clr-namespace:My_Namespace" x:Key="MyNiceConverterName" />
</Control.Resources>
请记住将
变量\u与\u值一起更改为您希望在绑定中使用的值


我希望有帮助

Silverlight for WP7不支持AFAIK触发器。binding converter/IValueConverter的建议很好。我相信触发器在wp7中工作,Caliburn Micro actions不是这样工作的吗?我可能是错的。你不能绑定image Source属性并在视图模型中具有复杂性吗?太棒了,非常感谢!不过只有一个问题。在我的XAML中使用它的地方,末尾是否缺少一个额外的扭曲支撑?e、 g..SexToSourceConverter}}“我还收到了以下错误声明:错误1'Pathportal.SexToSourceConverter'未实现接口成员'System.Windows.Data.IValueConverter.ConvertBack(对象、系统.Type、对象、系统.Globalization.CultureInfo)“…有什么想法吗?当使用MVVM时,我们从来没有使用过ValueConverters,您已经能够在VM中转换值了,那么为什么还要使用额外的类呢?我们最终将使用几十个转换器或过于复杂的转换器,它们试图做得太多,因此可以在稍微不同的环境中重复使用contexts@BenCr1.你是个笨蛋假设OP使用的是MVVM。2.VM应该知道视图使用的是哪些状态的图像,这会破坏视图的封装。@ColinE 1.在ConvertBack方法中,您可以返回Binding.DoNothing。2.您不认为应该让OP自己学习如何编写转换器吗?谢谢,您救了我一命时间太长了。
{Binding variable_with_value, Converter={StaticResource MyNiceConverterName}}