1

(我对 WPF 和 C# 非常陌生,所以请温柔一点!)

我正在尝试为我们的应用程序创建一个“起始页”,其中包含 5 个最近使用的超链接形式的项目(在 TextBlock 内?)。

项目中已有可用的绑定。如果我做一个这样的列表框......

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

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

如果有人可以指导我找到用于制作非网络超链接、对集合中的项目进行操作的良好资源,那将非常有帮助。

谢谢!

4

1 回答 1

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) 中详细介绍的自定义类,它允许您使用委托来处理命令。

祝你好运!

于 2012-08-15T01:52:15.070 回答