2014-05-09 36 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>