从MRU绑定创建超链接

时间:2012-08-14 21:56:37

标签: wpf c#-4.0 binding hyperlink

(我对WPF和C#非常新,所以要温柔,拜托!)

我正在尝试为我们的应用程序创建一个“起始页面”,它将以超链接形式(在TextBlock内部)中以最近使用的5个项目为特色。

项目中已有绑定可用。如果我像这样做一个ListBox ......

<TextBlock Margin="51,189,0,223.5" HorizontalAlignment="Left" Width="177" Background="#FFEBEAEA">
<ListBox Width="200" ItemsSource="{Binding RecentProjects}" ItemTemplate="{Binding}">
</ListBox>
</TextBlock>

...我得到了之前项目的完整路径。我想以超链接格式将它们删除为文件名(甚至可能删除扩展名),然后将点击操作设置为“打开文件”命令,文件名作为参数。

如果有人可以指导我使用非网络超链接的好资源,对集合中的项目采取行动,那将非常有帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

好问题,您的XAML可能看起来像这样:

<ListBox ItemsSource="{Binding RecentProjects}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock>
                        <Hyperlink Command="{Binding OpenCommand}">
                            <TextBlock Text="{Binding DisplayFileName}"/>
                        </Hyperlink>      
                    </TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

然后课程看起来像这样:

class Class1
{
    public List<Project> RecentProjects { get; set; }

    public class Project
    {
        public ICommand OpenCommand { get; set; }

        public Project()
        {
            OpenCommand = new RelayCommand(OpenFile);
        }

        public string FileName { get; set; }

        public string DisplayFileName
        {
            get { return Path.GetFileNameWithoutExtension(FileName) ; }    
        }

        public void OpenFile(object sender)
        {
            // Open the file here e.g.
            Process.Start(FileName);
        }
    }  
}

RelayCommand是MVVM教程(http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090051)中详细介绍的自定义类,它允许您使用委托来处理命令。< / p> 祝你好运!