我已經將ItemsFlyout添加到ItemsControl.ItemTemplate中的按鈕。此外,我能夠將當前項目綁定爲CommandParameter。 現在我想將Command綁定到MenuFlyoutItem。 在代碼隱藏:如何從資源中使用ElementName綁定?
LayoutRoot.DataContext = this;
所以,如果我綁定到LayoutRoot我實際上將綁定到我目前的用戶控件。但以下綁定不起作用:
Command="{Binding ActivateProfileCommand, ElementName=LayoutRoot}"
它給了我沒有輸出錯誤,但它不工作。 下面是完整的例子:
<controls:HeaderDecorator x:Uid="AccountsHeader" Text="Accounts" x:Name="LayoutRoot" Name="LayoutRoot">
<controls:HeaderDecorator.Resources>
<MenuFlyout x:Key="AccountMenuFlyout">
<MenuFlyoutItem Text="Activate" Name="Activate"
Command="{Binding ActivateProfileCommand, ElementName=LayoutRoot}"
CommandParameter="{Binding}" />
</MenuFlyout>
</controls:HeaderDecorator.Resources>
<StackPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding Settings.Profiles}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<HyperlinkButton Content="{Binding}" FlyoutBase.AttachedFlyout="{StaticResource AccountMenuFlyout}" >
<i:Interaction.Behaviors>
<ic:ShowFlyoutBehavior />
</i:Interaction.Behaviors>
</HyperlinkButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</controls:HeaderDecorator>
看來問題是我想要使用共享對象的資源。我可以做嗎?那麼爲何不?
你在哪裏定義了ActivateProfileCommand? – Dani 2014-12-03 09:00:14
ActivateProfileCommand在UserControl中。將LayoutRoot的DataContext設置爲此UserControl。其實我看到它應該是「{綁定DataContext.ActivateProfileCommand ...」,但這也不起作用。 – norekhov 2014-12-03 12:39:24
嘗試將ElementName更改爲存儲該命令的UserControl。 – Dani 2014-12-03 13:53:26