上面是示意图,具体规则如下:1 窗口的大小由小Item(上图共有8个小图,小Item间的距离和小Item自身的大小是固定的)决定,这个问题我已经解决了。2 有几个Item界面上显示几个Item,当大于四个时,多出的自动往现有的上一行排列。不知道是否说清楚了~~这个界面应该使用哪些布局控件进行布局呢?WPF新手,请大家多多指点~~我目前只能把每个item用DataTemplate表示出来,但外面该用什么控件我搞不定~~绑定的数据源我准备用List。

解决方案 »

  1.   

    ListView,用大图标方式显示。
      

  2.   


    正在学习,有别的方法吗,关键是每个小Item之间有固定的距离
      

  3.   

    可以用DIV + CSS 来实现
      

  4.   

    比较简单的用UniformGrid控件,自己控制好宽度就可以了
      

  5.   

    如果技术高点可以用ListView,里面用样式控制,
    想啥样有啥样
      

  6.   

    如果每个格子大小是一样的。
            <ItemsControl Margin="5" ItemsSource="{Binding SymbolIDList,Mode=TwoWay}" >
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <!--你的格子-->
                        <label/>        
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <UniformGrid Columns="{Binding ColumnCount}" Rows="{Binding RowCount}" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>你控制好行和列就行
      

  7.   

    决定用listview,正好学习一下,今天必须搞定~~
      

  8.   

    一般来说用WrapPanel<Style x:Key="listboxGalleryStyle" TargetType="{x:Type ListBox}">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <WrapPanel HorizontalAlignment="{Binding HorizontalAlignment}" VerticalAlignment="{Binding VerticalAlignment}" />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
    </Style>控制WrapPanel的MaxWidth是4个Item即可,另外一个选择是UniformGrid
    设置Columns=4也行
      

  9.   

    你可以参考一下
    http://nonocast.cn/?p=2679不过因为需要ItemSource做Binding,所以采用ListBox做Logical Element,用UniformGrid/WrapPanel来做Visual ElementMay that helps.
      

  10.   

    感谢各位指点,目前我采用代码通过canvas来实现的。
    WPF刚接触,绑定这块还没有把握~~帖子先结了,后面抽空我会用listview,WrapPanel,UniformGrid来分别实现。
    到时候再另开贴分享。再次感谢各位的热心指点~~