首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xaml中带有ItemsSource的动态ItemsSource?

xaml中带有ItemsSource的动态ItemsSource?
EN

Stack Overflow用户
提问于 2014-12-16 17:53:44
回答 1查看 3.7K关注 0票数 0

我是个蹩脚的英语,对不起..。

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

如前所述,我将标题绑定到对象的“名称”:

MainWindow.xaml

代码语言:javascript
复制
<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>

下面是我在c#,中的代码,如您所见,我将"myList“(这是我的ListBox)绑定到列表的ItemsGetSource (它包含了我想在菜单中显示的内容):

代码语言:javascript
复制
public MainWindow()
{
    var list = new List<History>
    {
        new History() { name = "Guy1"},
        new History() { name = "Guy2"},
        new History() { name = "Guy3"},
        new History() { name = "Guy4"},
    };

    InitializeComponent();

    this.myList.ItemsSource = list;
}

和我的类“历史”(“名称”字段是我想要显示的)

代码语言:javascript
复制
namespace MediaPlayer
{
    public class History
    {
        // "prop" puis "tab"
        public String name { get; set; }
        public String path { get; set; }
        public int time { get; set; }

        public override string ToString()
        {
            return name;
        }
    }
}

我想我不能用itemSource作为我的menuItems,也许?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 18:46:17

下面是一个只使用MenuItems的示例:

MainWindow.xaml

代码语言:javascript
复制
<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>

结果如下:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27510888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档