带有文件超链接 mvvm 的 WPF 列表框

标签 wpf hyperlink listbox

我有一个绑定(bind)到字符串ObservableCollection 的ListBox。

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

如何在 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}">

希望这有帮助

关于带有文件超链接 mvvm 的 WPF 列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066725/

相关文章:

c# - Bitmap.UriSource 未设置

WPF全屏应用程序-多台监视器

c++ - 第一个 leveldb c++ 示例代码无法链接 : what's the error indicating and how to fix it?

drop-down-menu - TinyMce 4 中的下拉菜单/组合框/列表框?

javascript - 如何检查列表框项目是否被选中?

c# - 仅在特定 GridViewColumn 中右键单击时显示上下文菜单

c# - WPF 基于权限的授权

php - 显示链接的绝对位置

github - 如何在GitHub自述文件中向视频添加链接图像?