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

本文关键字:定义 资源 xaml | 更新日期: 2023-09-27 18:02:29

我在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>

我该怎么做呢?由于

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

如果在代码中这样做是最简单的(并且完全支持)。使用附加属性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>