如何在xaml中更改已定义资源的值?

时间:2014-05-09 12:03:41

标签: c# xaml windows-phone-8 windows-runtime windows-store-apps

我在xaml中有一个网格,它使用一个资源作为附加的弹出窗口:

<Grid >
    <FlyoutBase.AttachedFlyout>
        <StaticResource ResourceKey="GridFlyout"/>
    </FlyoutBase.AttachedFlyout>

    .. other stuffs

</Grid>

我在页面中有一个已定义的资源:

<Page.Resources>
    <MenuFlyout x:Key="GridFlyout">
        <MenuFlyoutItem Text="delete"/>
        <MenuFlyoutItem Text="like"/>
        <MenuFlyoutItem Text="edit"/>
    </MenuFlyout>

但在某些情况下,我想为上面的网格设置以下资源:

<Page.Resources>
    <MenuFlyout x:Key="SecondaryGridFlyout">
        <MenuFlyoutItem Text="like"/>
    </MenuFlyout>

我该怎么做?感谢

1 个答案:

答案 0 :(得分:2)

如果您只是在代码中执行此操作,那么它是最简单的(并且完全支持)。使用附加属性AttachedFlyout

FlyoutBase.SetAttachedFlyout(theGrid, 
       (MenuFlyout) App.Current.Resources["SecondaryGridFlyout"]);
上例中的

theGrid表示您要更改的Grid

<Grid x:Name="theGrid">
    <FlyoutBase.AttachedFlyout>
        <StaticResource ResourceKey="GridFlyout"/>
    </FlyoutBase.AttachedFlyout>
    <!-- ... other stuff -->
</Grid>