WPF列表框与文件超链接mvvm [英] WPF Listbox with File Hyperlink mvvm

查看:131
本文介绍了WPF列表框与文件超链接mvvm的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个ListBox绑定到字符串 ObservableCollection

I have a ListBox bound to a string ObservableCollection.

每当 ObservableCollection 中的特定字符串值包含文件路径时,它应显示为超链接当点击它应该打开文件。

Whenever a particular string value in the ObservableCollection contains a path to a file , then it should show as a Hyperlink and when clicked it should open the file.

如何在ItemTemplate中实现这个?

How to implement this in the ItemTemplate?

推荐答案

你可以使用 DataTemplateSelector 实现此目的

public class HyperlinkDataTemplateSelector : DataTemplateSelector
{
       public DataTemplate RegularTemplate { get; set; }

       public DataTemplate HyperlinkTemplate { get; set; }

       public override System.Windows.DataTemplate SelectTemplate(object item, System.Windows.DependencyObject container)
       {
             var str = item as string;

             // Check if str contains path and return the dataTemplate accordingly

             return // Either RegularTemplate or HyperlinkTemplate 
       }
}

在xaml

<local:HyperlinkDataTemplateSelector x:Key="itemTemplateSelector">
        <local:HyperlinkDataTemplateSelector.RegulatTemplate>
            <DataTemplate>
               <TextBlock Text="{Binding Path=YourProperty}"/>  
            </DataTemplate>
        </local:HyperlinkDataTemplateSelector.RegularTemplate>
        <local:HyperlinkDataTemplateSelector.HyperlinkTemplate>
            <DataTemplate>
                    <TextBlock>
                        <Hyperlink NavigateUri="{Binding Path=YourProperty}">
                           <TextBlock Text="{Binding Path=YourProperty}" />
                        </Hyperlink>   
                    </TextBlock>
            </DataTemplate>
        </local:HyperlinkDataTemplateSelector.HyperlinkTemplate>
</local:HyperlinkDataTemplateSelector>

ListBox 声明中使用您的 DataTemplateSelector

 <ListBox ItemsSource="{Binding Path=YourCollection}" ItemTemplateSelector="{StaticResource itemTemplateSelector}">

希望这会有所帮助

这篇关于WPF列表框与文件超链接mvvm的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆