WPF 实现类似C#中ListView大图标模式,加入链接

 近来,因为工作原因,要做wpf。学习并用wpf写了几天,发现wpf真的很灵活。

以WPF 实现类似C#中ListView大图标模式来说,虽然有人用滚动视图加WrapPanel的自定义方式实现,但是我觉得没必要把问题想的太复杂,因为wpf本身是很灵活的。

下面是我从msdn的论坛上copy过来的代码,看看就知道了。

 

<ListBox Name="AppListBox" Background ="Transparent" ItemsSource="{Binding}" ScrollViewer.CanContentScroll="True">

            <ListBox.ItemsPanel>

                <ItemsPanelTemplate>

                    <WrapPanel/>

                </ItemsPanelTemplate>

            </ListBox.ItemsPanel>

            <ListBox.ItemTemplate>

                <DataTemplate>

                    <Grid >

                        <Grid.RowDefinitions>

                            <RowDefinition Height="Auto" ></RowDefinition>

                            <RowDefinition Height="Auto" ></RowDefinition>

                        </Grid.RowDefinitions>

                        <Image Source="{Binding Pic}"/>

                        <TextBlock Text="{Binding Name}" Grid.Row="1"/>

                    </Grid>

                </DataTemplate>

            </ListBox.ItemTemplate>

        </ListBox>

后台代码:

        namespace StyleWorkAround

{

    /// <summary>

    /// Interaction logic for MainWindow.xaml

    /// </summary>

    public partial class MainWindow : Window

    {

        ObservableCollection<LVData> LVDatas = new ObservableCollection<LVData>();

        public MainWindow()

        {

            InitializeComponent();

            LVDatas.Add(new LVData { Name = "ª??1", Pic = "http://www.google.com/intl/en_ALL/images/logo.gif" });

            LVDatas.Add(new LVData { Name = "ª??2", Pic = "http://www.google.com/intl/en_ALL/images/logo.gif" });

            AppListBox.ItemsSource = LVDatas;

        }

    }

 

    public class LVData

    {

        public string Name { getset; }

        public string Pic { getset; }

    }

}

这个代码是完全可以工作的。

来自:http://social.msdn.microsoft.com/Forums/zh-CN/wpfzhchs/thread/f9b5fb48-4373-4373-9609-01273dcd217f,感谢Sheldon _Xiao的为我们提供的代码。

 

其实,我想要的是下面的效果:

<ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid >
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="64" ></ColumnDefinition>
                            <ColumnDefinition Width="64" ></ColumnDefinition>
                        </Grid.ColumnDefinitions>
                        <Image Source="{Binding Pic}"/>
                        <TextBlock Text="{Binding Name}" Grid.Column="1"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>

当然更改起来很简单了。
 

当然,你还有可以实现文件和链接的组合:

<DataTemplate>
                                                <StackPanel>
                                                    <TextBlock Text="{Binding xxx}"   />
                                                    <Label x:Name="lblFormalList" HorizontalAlignment="Left"   VerticalAlignment="Top"  >
                                                        <Hyperlink x:Name="hyperlink" Click="hyperlink_Click"   >
                                                            <TextBlock Text="嘻嘻嘻" />
                                                        </Hyperlink>
                                                    </Label>
                                                </StackPanel>
                                            </DataTemplate>

 

 

虽然上面用的都是listbox,我将其改为listview一样使用。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值