我在我的网络应用程序中使用silverlight(v3.5)日历控件。此日历控件中一周的第一天设置为星期一。
在PC上,日历控制日期上方的日期标签工作正常。
在Mac计算机上,日历控件正确显示日期,但日期上方的日期标签总是向右1天,例如3月2日被视为星期三,实际上是星期二。
有没有人遇到过这个?或者有人知道我在这里做错了吗?
以下是我正在运行的代码(想要添加快照,但反垃圾邮件控制可以阻止我)昨天是3月2日它正确显示但它是星期二而不是星期三,因为它显示在Mac上。
第一个日历控件是名为“DefaultCal”的控件。没有什么特别的只是默认日历。名为“ChangedCal1”的第二个控件将FirstDayOfWeek的设置设置为“Monday”以测试它是否对控件有任何影响,最后一个名为“ChangedCal2”的FirstDayofWeek设置为“Sunday”,这是一个默认设置。 Mac中。
在个人电脑上,所有三个日历都显示正确,即使在Mac上“日期部分”(数字部分)是正确的,只有“日标签”(星期一星期三......)以某种方式向右移动一个空格
为了清楚这是我为测试此日历问题而创建的新默认Silverlight应用程序,因为我想确保没有任何设置或任何其他代码可以影响结果。
由于
<Grid x:Name="LayoutRoot">
<StackPanel x:Name="MainP">
<TextBlock x:Name="Temp" Text="This is the control"></TextBlock>
<controls:Calendar x:Name="DefaultCal" ></controls:Calendar>
<TextBlock x:Name="Temp2" Text="Monday"></TextBlock>
<controls:Calendar x:Name="ChangedCal1" FirstDayOfWeek="Monday"></controls:Calendar>
<TextBlock x:Name="Temp3" Text="Sunday"></TextBlock>
<controls:Calendar x:Name="ChangedCal2" FirstDayOfWeek="Sunday"></controls:Calendar>
</StackPanel>
答案 0 :(得分:1)
与Mac上设置为新西兰标准时间的时区有相同的问题。如果您将时区设置为Sydeny,则日历会正确。此外,如果您执行以下DateTime.Now.ToString(“yyyy-MM-dd ddd”),则该日期为一天...要解决此问题,请将以下代码添加到App.xaml.cs构造函数中,该构造函数将旋转日期在文化中。不优雅,但至少Mac现在知道它是什么日子!
if (new DateTime(2011, 3, 28).ToString("ddd") == "Tue")
{
CultureInfo culture = new CultureInfo("en-AU");
culture.DateTimeFormat.DayNames = new[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
culture.DateTimeFormat.AbbreviatedDayNames = new[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
culture.DateTimeFormat.ShortestDayNames = new[] { "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" };
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
}
答案 1 :(得分:0)
听起来像是Silverlight日历中的一个错误。 首先,我建议检查它是否未在Silverlight 4中修复。因此,请下载开发人员mac运行时并检查是否有任何更改。
如果在Silverlight 4中没有解决,如果我是你,我会提交一个错误@ http://tinyurl.com/SilverlightBug
由于您实际上没有提供任何最小和基本的复制(xaml)和打印屏幕,因此很难确切地知道错误。但最糟糕的情况是,您应该能够遍历可视树,找到TextBlock并更改它们。