Application 에 자주 사용되는 Recent Files 의 WPF 구현입니다.
사용법
Reference
Axis.Windows.RecentFiles in Axis.Utils.dll
Settings 에 RecentFiles 아이템을 추가합니다.
형식 Axis.Windows.RecentFiles
기본값 <RecentFiles />
XAML
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:settings="clr-namespace:Axis.Print.Properties"
<settings:Settings x:Key="settings" />
<Style x:Key="RecentFilesItemContainerStyle">
<Setter Property="MenuItem.Header" Value="{Binding FileName}" />
<Setter Property="MenuItem.InputGestureText" Value="" />
<Setter Property="MenuItem.Command" Value="Open" />
<Setter Property="MenuItem.CommandParameter" Value="{Binding FileName}" />
</Style>
<Style x:Key="RecentFilesMenuItemStyle" TargetType="MenuItem">
<Setter Property="Header" Value="Recent Files" />
<Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource Self}, Path=HasItems}" />
<Setter Property="ItemContainerStyle" Value="{StaticResource RecentFilesItemContainerStyle}" />
<Setter Property="ItemsSource" Value="{Binding Source={StaticResource settings}, Path=Default.RecentFiles}" />
</Style>
Code
{
string fileName = e.Parameter as string;
if (string.IsNullOrEmpty(fileName))
{
OpenFileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog().GetValueOrDefault())
{
fileName = dialog.FileName;
}
}
if (string.IsNullOrEmpty(fileName))
{
// TODO: Open file here
Settings.Default.RecentFiles.Add(fileName);
}
}
Application
종료시 Settings.Default 를 저장하여야 합니다.
=====
참고
RecentFiles 는 Settings.RecentFiles 에 XML 구문으로 저장합니다.
<RecentFile FileName="..." LastAccessTime="..." />
<RecentFile FileName="..." LastAccessTime="..." />
</RecentFiles>
===
RecentFiles을 업데이트 하기 위해서는 다음의 한가지 메소드만을 사용합니다.
기존에 파일이 있는 경우는 LastAccessTime 만을 현재 시각으로 업데이트 합니다.
Settings.Default.RecentFiles.Add(fileName);
===
UI 에서는 MenuItem.ItemsSource 에 RecentFiles 를 바인딩하였습니다.
Sort를 LastAccessTime Desc 로 설정하면 최근 사용 순서대로 소팅되어 표시됩니다.

Prev

Rss Feed