1

我有这个 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>

...失败,“属性“内容”只能设置一次。

为什么会出现这样的问题,当下面基本相同的 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 是什么,并抱怨这是一个无效元素。

更新

我还不能测试它,但我认为 Abdallah 的意思是我需要改变它:

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

...对此:

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

1 回答 1

1

你有两个问题:

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

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

<Flyout>
    singleUIElement
</Flyout>

单UI元素:

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

2)预期以下类型:“FlyoutBase”。

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

于 2014-12-24T13:02:47.860 回答