3

此完全相同的代码在 Visual Studio 2010 WPF 设计器中正确显示,但在 VS 2013 设计器中不起作用。

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="200" Width="300">
<Window.Resources>
    <XmlDataProvider x:Key="xdata" XPath="root" IsInitialLoadEnabled="True" IsAsynchronous="False">
        <x:XData>
            <root xmlns="">
                <item value="one" />
                <item value="two" />
                <item value="three" />
            </root>
        </x:XData>
    </XmlDataProvider>
</Window.Resources>
<Grid>
    <ListBox ItemsSource="{Binding Source={StaticResource xdata}, XPath=*}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding XPath=@value}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

VS 2010 设计器正确显示带有项目“一”、“二”和“三”的列表框。但是 VS 2013 设计器只显示一个空列表框。

如果我将 XmlDataProvider 的 Source 属性设置为作为项目一部分的 xml 文件,那么它会显示在 2013 设计器中,但在重新构建项目之前,对 xml 文件的更改不会反映在设计器中。但是,在 VS 2010 中,对 x:XData 标记中的内联 xml 的更改会立即反映在设计器中。

我究竟做错了什么?还是微软在 2013 年删除了这种行为,期望人们在 xaml 中使用 Blend 来处理设计时数据?

4

0 回答 0