1

(私はWPFとC#に非常に慣れていないので、優しくしてください!)

最近使用した 5 つのプロジェクトをハイパーリンク形式 (TextBlock 内?) で表示するアプリケーションの「開始ページ」を作成しようとしています。

プロジェクト内で既に利用可能なバインディングがあります。このような ListBox を実行すると...

<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 に答える