【问题标题】:I fail to understand databinding in WP7我无法理解 WP7 中的数据绑定
【发布时间】:2012-02-08 09:44:49
【问题描述】:

在 android 中,这是简单明了的。在 WP7 中它不是(至少对我而言)。 我想要达到的目标: 我想要一个 ListPicker:

<toolkit:ListPicker>

我想用字符串填充它(与 xml 数组在 android 中用于微调器的方法相同)

我希望将字符串作为选取器内的项目显示给用户。 如果这个解决方案支持国际化也很好。 我尝试使用字符串列表创建资源,但无法弄清楚如何将其“绑定”到控件。 我不希望将字符串值硬编码在 .cs 文件中。

【问题讨论】:

    标签: windows-phone-7 silverlight-toolkit


    【解决方案1】:

    填充ListPicker 控件的“标准”方法是将其ItemsSource 属性设置为您希望呈现的集合。 ListPicker 有一个 ItemTemplate,它详细说明了每个项目是如何呈现的。如果您未指定ItemTemplate,则默认模板将使用toString(),并在集合中的每个项目上调用以呈现它们。

    查看本教程了解更多详情:

    ListPicker for WP7 in depth

    所以一个简单的例子是:

    <toolkit:ListPicker x:Name="myList"/>
    

    在代码隐藏中:

    myList.ItemsSource = new List<string>() {
      "one", "two", "three"
    };
    

    【讨论】:

    • 好的,谢谢,但我不希望这些值被硬编码。我希望整个事情都对 i18n 友好。
    • 我猜我可以通过从资源中获取字符串来填充您提出的列表。没有更简单、更直接的方法吗?
    • 你所说的更直接是什么意思 - 你的意思是在 XAML 中而不是代码中?
    • i18n 是你自己实现的东西,通过将字符串存储在资源字典中:blogs.msdn.com/b/global_developer/archive/2011/01/18/…
    【解决方案2】:

    扩展 Colin 的答案:您可以在 XAML 中指定字符串:来自工具包示例代码 ListPickerSample.xaml

    您需要在顶部添加一个命名空间...

    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    

    然后……

    <toolkit:ListPicker Header="Background">
          <sys:String>dark</sys:String>
          <sys:String>light</sys:String>
          <sys:String>dazzle</sys:String>
    </toolkit:ListPicker>
    

    您应该能够使用 {Binding}{StaticResource} 将标准 XAML i18n 技术应用于这些字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 2017-11-29
      • 2017-04-07
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多