使用c#中的partial将事件,方法,属性,继承等分离,比region更方便
示例:
// 事件
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
Debug.WriteLine("OnNavigatedTo");
if (myfiles == null)
{
folder = KnownFolders.SavedPictures;
myfiles = await folder.GetFilesAsync();
}
await ReadImageFiles(myfiles);
}
private void SplitViewToggle_Click(object sender, RoutedEventArgs e)
{
...
}
private async void SelectFolderButton_Click(object sender, RoutedEventArgs e)
{
...
}
private void GridViewItem_Click(object sender, ItemClickEventArgs e)
{
...
}
}
// 属性
public sealed partial class MainPage : INotifyPropertyChanged
{
private bool _IsBusy = false;
public bool IsBusy
{
get { return _IsBusy; }
set { SetProperty(ref _IsBusy, value); }
}
// --------
public static ObservableCollection<ImageBrushAndFileInfo> _ImageObjects = new ObservableCollection<ImageBrushAndFileInfo>();
public ObservableCollection<ImageBrushAndFileInfo> ImageObjects
{
get { return _ImageObjects; }
set { SetProperty(ref _ImageObjects, value); }
}
private double _DesiredColumnWidth = 250;
public double DesiredColumnWidth
{
get { return _DesiredColumnWidth; }
set { SetProperty(ref _DesiredColumnWidth, value); }
}
// --------
//实现INotify接口
public event PropertyChangedEventHandler PropertyChanged;
private bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)
{
if (object.Equals(storage, value)) return false;
storage = value;
this.OnPropertyChanged(propertyName);
return true;
}
private void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
//
public static StorageFolder folder;
public static IReadOnlyList<StorageFile> myfiles;
}
// 方法
public sealed partial class MainPage
{
void BeautyTitle()
{
...
}
private async Task ReadImageFiles(IReadOnlyList<StorageFile> myfiles)
{
...
}
}
// 辅助类
public class ImageBrushAndFileInfo : INotifyPropertyChanged
{
private ImageBrush _ImageBrush;
public ImageBrush ImageBrush
{
get { return _ImageBrush; }
set { SetProperty(ref _ImageBrush, value); }
}
private StorageFile _file;
public StorageFile file
{
get { return _file; }
set { SetProperty(ref _file, value); }
}
// --------
private double _ImageSize = 400;
public double ImageSize
{
get { return _ImageSize; }
set { SetProperty(ref _ImageSize, value); }
}
// --------
//实现INotify接口
public event PropertyChangedEventHandler PropertyChanged;
private bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)
{
if (object.Equals(storage, value)) return false;
storage = value;
this.OnPropertyChanged(propertyName);
return true;
}
private void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
// 辅助类
public class MyConverters : IValueConverter
{
public async static Task<ImageBrush> ConvertFile2ImgBrush(IStorageFile file)
{
BitmapImage bi = new BitmapImage();
ImageBrush SkinImageBrush = new ImageBrush();
try
{
using (IRandomAccessStream ir = await file.OpenAsync(FileAccessMode.Read))
{
await bi.SetSourceAsync(ir);
SkinImageBrush.ImageSource = bi;
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return null;
}
return SkinImageBrush;
}
}