在Windows Universal Collection中使用DesignData

时间:2016-05-02 23:16:39

标签: c# wpf visual-studio xaml design-data

我应该在一个非常简单的案例中与DesignData斗争。 我在Windows通用项目中定义了以下简单控件

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        your_input_string += event.unicode

这些类定义如下:

<UserControl
...
xmlns:local="clr-namespace:SimpleDataBind"
...
<UserControl.Resources>
    <DataTemplate x:Key="SimpleListTemplate">
        <TextBox Text="{Binding Name}"  />
    </DataTemplate>
</UserControl.Resources>
<Grid>
    <StackPanel Grid.Row="0" d:DataContext="{d:DesignData Source=./DesignData/Single.xaml}">
        <TextBox Text="{Binding Name}"/>
    </StackPanel>
    <ListView Grid.Row="1" d:DataContext="{d:DesignData Source=./DesignData/Multiple.xaml}"
         ItemTemplate="{StaticResource SimpleListTemplate}"
         ItemsSource="{Binding collection}">
    </ListView>
</Grid>

元素&#39;集合&#39;在CodeBehind中定义了ElementCollection类型,以提供有效的绑定源。

Single.xaml很简单:

public class Element
{
    public Element() { }
    public string Name { get; set; }
}
public class ElementCollection : ObservableCollection<Element>
{
    public ElementCollection() { }
}

倍数同样如此:

 <local:Element xmlns:local="clr-namespace:SimpleDataBind" Name="Single" />

在Designer中查看时,我们应该看到上面的设计数据。事实上,Control显示了单身&#39;在Grid的第一行中正确地命名。但是,控件在网格的第二行中没有显示任何内容。

我明显遗漏了一些明显的东西......

1 个答案:

答案 0 :(得分:0)

好的,终于想通了。解决方案不是绑定到XAML中的运行时对象;即,在上面的源代码中,替换元素

    ItemsSource="{Binding collection}"

使用元素

    ItemsSource="{Binding}"

然后你可以在......运行时绑定到运行时对象。

它有点有趣(对于熟悉该工具的其他人可能很明显)它以这种方式工作,并且Microsoft文档有点模糊和过时(小伙伴们想要指向Silverlight文档,不要'在环球影城工作。

但无论如何,希望这有助于某人!