为什么这个XAML失败了"属性"内容"只能设置一次。"?

时间:2014-12-24 06:01:36

标签: xaml winrt-xaml uielement flyout kaxaml

我有这个XAML:

<AppBarButton Icon="Protected" Label="Privacy Policy" >
    <AppBarButton.Flyout>
        <StackPanel>
        <Flyout>
            <TextBlock Text="Photrax extracts information from images you load into it. The information it extracts includes location information (where the photos were taken, when that is available) and the date and time the photo was taken. This data is stored in a local/internal/embedded (SQLite) database. This data is not stored in the cloud but only on your local device." TextWrapping="Wrap" FontSize="26" FontFamily="Verdana">
            </TextBlock>
            <TextBlock Text="To reiterate: Your data is not shared with anyone else. It is stored only on the device from which you use Photrax." TextWrapping="Wrap" FontSize="26" FontFamily="Verdana">
            </TextBlock>
        </Flyout>
        </StackPanel>
    </AppBarButton.Flyout>
</AppBarButton>

...失败了,&#34; 属性&#34;内容&#34;只能设置一次。&#34;

为什么有这个问题,当以下基本相同的XAML编译好时:

<AppBarButton Icon="MapPin" Label="Colors In Use" Tapped="appbarbtnPhotosetColorMapping_Tapped">
    <AppBarButton.Flyout>
        <Flyout>
            <StackPanel Background="Azure">
                <TextBlock Text="Photoset:Pushpin Color Legend" TextWrapping="Wrap" FontSize="26" FontFamily="Verdana"></TextBlock>
                <TextBlock x:Name="textblock0" Text="Unused" Foreground="Red" FontFamily="Segoe UI" FontSize="13" Margin="4" />

。 。 。                                                                 

我也使用xaml获得了其他错误信息(关于以下类型的预期:flyoutbase和uielement),但我认为这是给我业务的内容业务。

我将问题代码粘贴到kaxaml中,但它甚至不知道AppBarButton是什么,并抱怨这是一个无效的元素。

更新

我还无法测试它,但我认为阿卜杜拉的意思是我需要改变它:

<StackPanel>
<Flyout>
  . . .
</Flyout>
</StackPanel>

......对此:

<Flyout>
<StackPanel>
. . .
</StackPanel>
</Flyout>

1 个答案:

答案 0 :(得分:1)

这里有两个问题:

1)属性“内容”只能设置一次。

您不能多次为<Flyout> </Flyout>设置内容,并且在第一个XAML代码和工作XAML中设置内容两次(两个TextBlocks)(One StackPanel),根据{{3} }:

<Flyout>
    singleUIElement
</Flyout>

singleUIElement:

  

声明内容的单个对象元素。这必须是一个   在其层次结构中具有UIElement的对象(纯字符串不起作用)。   这可以是一个容器,例如Panel派生类,这样就可以了   弹出窗口内的多个内容项目可以按布局排列。

2)预计会出现以下类型:“FlyoutBase”。

您不能将Flyout属性设置为任何不是从MSDN类派生的类(即只有Flyout和MenuFlyout)。您将第一个XAML代码中的Flyout属性设置为StackPanel,并将XAML设置为Flyout。