2014-05-09 31 views
2

我有在使用的资源用于其连接弹出XAML中网格:如何更改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> 

我该怎么做?谢谢

+0

@loop DataTemplateSelector不与弹出按钮 – user3293835

+1

工作在代码中,这应该工作:'FlyoutBase.SetAttachedFlyout(theGrid,(MenuFlyout)App.Current.Resources [ “SecondaryGridFlyout”]);'其中'theGrid'表示您想用新的弹出窗口来定位的网格元素。 – WiredPrairie

+0

@WiredPrairie谢谢。这就是答案。 – user3293835

回答

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>