JD2022-TU1/main/tools/modules/JD.AssetBrowser/Model/FolderTreeNodeModel.cs

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; }
}
}