WPF列表框与文件超链接mvvm [英] WPF Listbox with File Hyperlink mvvm
本文介绍了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屋!
查看全文