【问题标题】:How to define XAML DesignData in WinRT如何在 WinRT 中定义 XAML DesignData
【发布时间】:2023-03-23 08:36:01
【问题描述】:

我正在开发 Windows 8.1 应用程序。

我有一个Page

<Page d:DataContext="{d:DesignData /SampleData/MySampleData.xaml}" 
      x:Class="xxx.MyView"
      ...>
   <TextBlock Text="{Binding MyString}"/>
   <TextBlock Text="{Binding StartTime}"/>
</Page>

那我有MySampleData.xaml:

<local:MyViewModel
 ...
 xmlns:local="using:xxx.ViewModels" 
 MyString="my text"
 StartTime="2014/01/01"/>

MyViewModel.cs 我有:

public class MyViewModel
{
    public string MyString {get; set;}
    public DateTime StartTime {get; set;}
}

在设计器中它显示正确,但在编译时我的MySampleData.xaml 中出现此错误:

无法将文本值“2014/01/01”分配给“DateTime”类型的属性“StartTime”

MyString 的部分工作完美,但StartTime 没有(在 Windows 8.0 中确实如此),知道如何让它工作吗?又为什么要编译设计数据?

其他资源

根据this question,原因是因为WinRT不支持TypeConverters

我看到this question,它建议你创建一个假类,但我真的想在 XAML 中做。

有什么想法吗?

【问题讨论】:

    标签: c# xaml winrt-xaml


    【解决方案1】:

    我创建了这个类:

    public class Jerry
    {
        public DateTime SampleDateTime { get; set; }
    }
    

    并且,它使用 Blend 创建了以下示例数据:

    <App47:Jerry xmlns:App47="using:App47" 
        xmlns:System="using:System" 
        SampleDateTime="12/11/2014 17:00:25" />
    

    基于此,我认为您只需要包含时间字符串即可。

    祝你好运!

    【讨论】:

    • 这仍然是一个非常奇怪的问题(我确实包括系统),它在设计器中正确显示数据;但随后无法编译,它给出了一个错误:无法将文本值“12/11/2014 17:00:25”分配给“日期时间”类型的属性“开始时间”。很奇怪,为什么要编译设计数据?
    • 对不起,我应该更清楚的问题。我已经更新了。
    • 您是否尝试过从头开始使用更简单的类?只是为了证明这是 XAML 中的问题,而不是您的课程的问题?
    • Jip :P 几次。甚至从一个空白项目中尝试过。
    • 对此感到抱歉。因为它在一个空白项目中对我有用,而在一个空白项目中对你不起作用,我不知道从哪里开始。你试过点燃蜡烛吗? (j/k)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多