49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using System;
|
|
using System.Windows.Media.Imaging;
|
|
|
|
namespace JD.AssetBrowser.Model
|
|
{
|
|
/// <summary>
|
|
/// Provides a tree node model implementation for folders that can toggle the image based on expansion state.
|
|
/// </summary>
|
|
public class FolderTreeNodeModel : ThreeStateCheckableTreeNodeModel
|
|
{
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="FolderTreeNodeModel"/> class.
|
|
/// </summary>
|
|
public FolderTreeNodeModel()
|
|
{
|
|
UpdateImageSource();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the folder image source based on the expansion state.
|
|
/// </summary>
|
|
private void UpdateImageSource()
|
|
{
|
|
var imageUri = new Uri(IsExpanded ? "pack://application:,,,/JD.AssetBrowser;component/Resources/folder-open.png" : "pack://application:,,,/JD.AssetBrowser;component/Resources/folder-closed.png");
|
|
ImageSource = new BitmapImage(imageUri);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the PropertyChanged event.
|
|
/// </summary>
|
|
protected override void OnPropertyChanged(string propertyName = null)
|
|
{
|
|
base.OnPropertyChanged(propertyName);
|
|
|
|
switch (propertyName)
|
|
{
|
|
case nameof(IsExpanded):
|
|
UpdateImageSource();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the folder path.
|
|
/// </summary>
|
|
public string Path { get; set; }
|
|
|
|
}
|
|
}
|