C# 在xaml中包含ItemsSource的动态菜单项?

C# 在xaml中包含ItemsSource的动态菜单项?,c#,wpf,visual-studio-2013,menuitem,itemssource,C#,Wpf,Visual Studio 2013,Menuitem,Itemssource,我对英语一窍不通,很抱歉 我试图创建基于集合(对象列表)的动态菜单项,这是我的xaml,您可以看到“列表框”和“菜单项” 正如我所说,我正在将标题绑定到对象的“名称”: main window.xaml <Grid Margin="0,0,-8,-9" Background="Black" > <DockPanel x:Name="LayoutRoot"> <Grid VerticalAlignment="Top">

我对英语一窍不通,很抱歉

我试图创建基于集合(对象列表)的动态菜单项,这是我的xaml,您可以看到“列表框”和“菜单项”

正如我所说,我正在将标题绑定到对象的“名称”:

main window.xaml

<Grid Margin="0,0,-8,-9" Background="Black" >

    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu">
                    <ListBox x:Name="myList" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="461,-261,-1,106" Background="#FFFFE800" MouseDoubleClick="ListBox_Double_Click" Width="57">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid>

                                    <MenuItem Header="{Binding name}"> </MenuItem>

                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </MenuItem>
            </Menu>
        </Grid>
<Grid Margin="0,0,-8,-9" Background="Black" >
    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu" x:Name="myList">
                    <MenuItem.ItemContainerStyle>
                        <Style>
                            <Setter Property="MenuItem.Header" Value="{Binding name}"/>
                        </Style>
                    </MenuItem.ItemContainerStyle>
                </MenuItem>
            </Menu>
        </Grid>
    </DockPanel>
</Grid>

我想我不能将itemSource用于我的menuItems,也许吧?

下面是一个仅使用menuItems的示例:

main window.xaml

<Grid Margin="0,0,-8,-9" Background="Black" >

    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu">
                    <ListBox x:Name="myList" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="461,-261,-1,106" Background="#FFFFE800" MouseDoubleClick="ListBox_Double_Click" Width="57">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid>

                                    <MenuItem Header="{Binding name}"> </MenuItem>

                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </MenuItem>
            </Menu>
        </Grid>
<Grid Margin="0,0,-8,-9" Background="Black" >
    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu" x:Name="myList">
                    <MenuItem.ItemContainerStyle>
                        <Style>
                            <Setter Property="MenuItem.Header" Value="{Binding name}"/>
                        </Style>
                    </MenuItem.ItemContainerStyle>
                </MenuItem>
            </Menu>
        </Grid>
    </DockPanel>
</Grid>

结果如下所示:


以下是一个仅使用菜单项的示例:

main window.xaml

<Grid Margin="0,0,-8,-9" Background="Black" >

    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu">
                    <ListBox x:Name="myList" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="461,-261,-1,106" Background="#FFFFE800" MouseDoubleClick="ListBox_Double_Click" Width="57">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid>

                                    <MenuItem Header="{Binding name}"> </MenuItem>

                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </MenuItem>
            </Menu>
        </Grid>
<Grid Margin="0,0,-8,-9" Background="Black" >
    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu" x:Name="myList">
                    <MenuItem.ItemContainerStyle>
                        <Style>
                            <Setter Property="MenuItem.Header" Value="{Binding name}"/>
                        </Style>
                    </MenuItem.ItemContainerStyle>
                </MenuItem>
            </Menu>
        </Grid>
    </DockPanel>
</Grid>

结果如下所示:


以下是一个仅使用菜单项的示例:

main window.xaml

<Grid Margin="0,0,-8,-9" Background="Black" >

    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu">
                    <ListBox x:Name="myList" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="461,-261,-1,106" Background="#FFFFE800" MouseDoubleClick="ListBox_Double_Click" Width="57">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid>

                                    <MenuItem Header="{Binding name}"> </MenuItem>

                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </MenuItem>
            </Menu>
        </Grid>
<Grid Margin="0,0,-8,-9" Background="Black" >
    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu" x:Name="myList">
                    <MenuItem.ItemContainerStyle>
                        <Style>
                            <Setter Property="MenuItem.Header" Value="{Binding name}"/>
                        </Style>
                    </MenuItem.ItemContainerStyle>
                </MenuItem>
            </Menu>
        </Grid>
    </DockPanel>
</Grid>

结果如下所示:


以下是一个仅使用菜单项的示例:

main window.xaml

<Grid Margin="0,0,-8,-9" Background="Black" >

    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu">
                    <ListBox x:Name="myList" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="461,-261,-1,106" Background="#FFFFE800" MouseDoubleClick="ListBox_Double_Click" Width="57">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid>

                                    <MenuItem Header="{Binding name}"> </MenuItem>

                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </MenuItem>
            </Menu>
        </Grid>
<Grid Margin="0,0,-8,-9" Background="Black" >
    <DockPanel x:Name="LayoutRoot">
        <Grid VerticalAlignment="Top">
            <MediaElement x:Name="mediaElement" HorizontalAlignment="Center"  Margin="0,0,60,30" VerticalAlignment="Top" MouseLeftButtonUp="mediaElement_MouseLeftButtonUp">

            </MediaElement>
            <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="525" IsMainMenu="True">
                <MenuItem Header="Menu" x:Name="myList">
                    <MenuItem.ItemContainerStyle>
                        <Style>
                            <Setter Property="MenuItem.Header" Value="{Binding name}"/>
                        </Style>
                    </MenuItem.ItemContainerStyle>
                </MenuItem>
            </Menu>
        </Grid>
    </DockPanel>
</Grid>

结果如下所示:


不太确定您要创建什么,但您的代码实际上可以工作。您可能没有看到您的列表项,因为您的
列表框中有很多页边距。如果我删除它们,例如
,我可以看到您的列表呈现得很好,但我不确定您到底想做什么。您正在尝试获取
菜单项的列表吗?如果是,为什么不设置
菜单
项资源
?因为您重写了
ToString()
,所以您甚至不需要
模板。同样,虽然这将“起作用”,但您通常也希望检查绑定并正确地实现它。不确定您要创建什么,但您的代码确实起作用。您可能没有看到您的列表项,因为您的
列表框中有很多页边距。如果我删除它们,例如
,我可以看到您的列表呈现得很好,但我不确定您到底想做什么。您正在尝试获取
菜单项的列表吗?如果是,为什么不设置
菜单
项资源
?因为您重写了
ToString()
,所以您甚至不需要
模板。同样,虽然这将“起作用”,但您通常也希望检查绑定并正确地实现它。不确定您要创建什么,但您的代码确实起作用。您可能没有看到您的列表项,因为您的
列表框中有很多页边距。如果我删除它们,例如
,我可以看到您的列表呈现得很好,但我不确定您到底想做什么。您正在尝试获取
菜单项的列表吗?如果是,为什么不设置
菜单
项资源
?因为您重写了
ToString()
,所以您甚至不需要
模板。同样,虽然这将“起作用”,但您通常也希望检查绑定并正确地实现它。不确定您要创建什么,但您的代码确实起作用。您可能没有看到您的列表项,因为您的
列表框中有很多页边距。如果我删除它们,例如
,我可以看到您的列表呈现得很好,但我不确定您到底想做什么。您正在尝试获取
菜单项的列表吗?如果是,为什么不设置
菜单
项资源
?因为您重写了
ToString()
,所以您甚至不需要
模板。同样,虽然这将“起作用”,但您通常也希望检查绑定并正确地实现它在没有xaml的情况下,如何做到这一点,只有在代码隐藏中才能做到?很抱歉回答得太晚了。:)在没有xaml的情况下,如何做到这一点,只有在代码隐藏中才能做到?很抱歉回答得太晚了。:)在没有xaml的情况下,如何做到这一点,只有在代码隐藏中才能做到?很抱歉回答得太晚了。:)如何在没有xaml的情况下,仅在代码隐藏中实现这一点?