(我对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>
...我得到了之前项目的完整路径。我想以超链接格式将它们删除为文件名(甚至可能删除扩展名),然后将点击操作设置为“打开文件”命令,文件名作为参数。
如果有人可以指导我使用非网络超链接的好资源,对集合中的项目采取行动,那将非常有帮助。
谢谢!
答案 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> 祝你好运!