簡體   English   中英

WPF 菜單項綁定問題

[英]WPF MenuItem Binding Issue

我遇到了一個關於 MenuItem 綁定的問題,我需要將一個嵌套對象綁定到一個MenuItem

public class QuestionType
{
    public string Name { get; set; }

    public ICollection<QuestionType> Types { get; set; }
}

public class ViewModel
{
    public ICollection<QuestionType> QuestionTypes { get; set; }

    public ViewModel()
    {
        QuestionTypes = new List<QuestionType>()
        {
            new QuestionType() { Name="Completion" },
            new QuestionType() { Name="Easy" },
            new QuestionType() { Name="MoreType", Types = new List<QuestionType>()
            {
                new QuestionType() { Name="SingleChoice" },
                new QuestionType() { Name="MultiChoice" },
                new QuestionType() { Name="Blend" },
            } },
        };
    }
}

public partial class CustomMenu : UserControl
{
    public CustomMenu()
    {
        InitializeComponent();
        this.DataContext = new ViewModel();
    }
}

在 XAML 代碼中:

我像這樣將它們綁定到 MenuItem:

<MenuItem ItemsSource="{Binding QuestionTypes}">
    <MenuItem.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:QuestionType}" 
                                  ItemsSource="{Binding Types}">
            <TextBlock Text="{Binding Name}"/>
        </HierarchicalDataTemplate>
        <DataTemplate DataType="{x:Type local:QuestionType}">
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>
    </MenuItem.Resources>
</MenuItem>

當我運行我的項目時,發生了異常。 附加信息: Set property 'System.Windows.ResourceDictionary.DeferrableContent' threw an exception.

另外:我需要為菜單項添加點擊事件,例如

<MenuItem.Resources>
 ...
</MenuItem.Resources>
<MenuItem.ItemContainerStyle>
    <Style TargetType="{x:Type MenuItem}">
        <EventSetter Event="Menu.Click" Handler="MenuItem_Click"/>
    </Style>
</MenuItem.ItemContainerStyle>

它沒有用,我不知道如何解決這個問題。

嘗試這個:

<MenuItem Header="Question Type" ItemsSource="{Binding QuestionTypes}" Click="MenuItem_Click">
    <MenuItem.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:QuestionType}" ItemsSource="{Binding Types}">
            <TextBlock Text="{Binding Name}"/>
        </HierarchicalDataTemplate>
    </MenuItem.Resources>
</MenuItem>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM