【发布时间】:2011-12-06 23:51:34
【问题描述】:
在 Silverlight Web 应用程序中,我有一个服务及其接口,我在其中声明了一个带有星期几的枚举:
[Serializable]
[DataContract]
[Flags]
public enum WeekDaysFlags : int {
[EnumMember]
Monday = 1,
[EnumMember]
Tuesday = 2,
[EnumMember]
Wednesday = 4,
[EnumMember]
Thursday = 8,
etc.
回到应用程序,我每天都有一个复选框,我想绑定;我确实做了一个接受参数的漂亮转换器:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int d;
if (int.TryParse(parameter.ToString(), out d))
{
WeekDaysFlags mask = WeekDaysFlags.Monday;
switch (d)
{
case 0:
mask = WeekDaysFlags.Sunday;
break;
case 1:
mask = WeekDaysFlags.Monday;
break;
case 2:
mask = WeekDaysFlags.Tuesday;
break;
case 3:
mask = WeekDaysFlags.Wednesday;
break;
case 4:
mask = WeekDaysFlags.Thursday;
break;
case 5:
mask = WeekDaysFlags.Friday;
break;
case 6:
mask = WeekDaysFlags.Saturday;
break;
}
WeekDaysFlags day = (WeekDaysFlags)value;
return (day & mask) == day;
}
return false;
}
然后复选框的 IsChecked 属性接收如下内容,每天的参数从 0 到 6。
IsChecked="{Binding WeeksDays, Mode=TwoWay, Converter={StaticResource DayOfWeekConverter}, ConverterParameter=1}"
然后我运行我的程序,读取数据库,绑定对象 aaaa 和......什么都没有!我希望检查星期一和星期三,因为 WeekDays 变量包含 5。 当我调试时,我确实使用正确的值和正确的参数进入转换器,当它应该这样做时它确实返回 true 或 false,但在 UI 中,没有选中任何复选框。不理解...
目前,由于我需要它工作,我从后面的代码中手动分配 IsChecked...
如果您有解决方案,那就太好了!另外我想知道当我需要“阅读”选中的复选框时绑定将如何工作;即如何获得 'Monday |星期三 | Thursday',或 13,或复选框中绑定变量中的任何内容 /me scratch head
感谢您的帮助;)
西尔万
【问题讨论】:
标签: c# silverlight data-binding ivalueconverter