【问题标题】:How to change value of a defined resource in xaml?如何更改 xaml 中已定义资源的值?
【发布时间】:2014-05-09 12:03:40
【问题描述】:

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

我该怎么做?谢谢

【问题讨论】:

  • @loop DataTemplateSelector 不适用于 Flyouts
  • 在代码中,这应该可以工作:FlyoutBase.SetAttachedFlyout(theGrid, (MenuFlyout) App.Current.Resources["SecondaryGridFlyout"]); 其中theGrid 表示您要使用新浮出控件定位的网格元素。
  • @WiredPrairie 谢谢。这就是答案。

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


【解决方案1】:

如果您只在代码中执行此操作,则最简单(并且完全支持)。使用附加属性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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多