mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
51 lines
2.0 KiB
C#
51 lines
2.0 KiB
C#
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Controls;
|
|
|
|
namespace ModernKeePass.Controls
|
|
{
|
|
public class SelectableTemplateListView: ListView
|
|
{
|
|
public DataTemplate SelectedItemTemplate
|
|
{
|
|
get { return (DataTemplate)GetValue(SelectedItemTemplateProperty); }
|
|
set { SetValue(SelectedItemTemplateProperty, value); }
|
|
}
|
|
public static readonly DependencyProperty SelectedItemTemplateProperty =
|
|
DependencyProperty.Register(
|
|
nameof(SelectedItemTemplate),
|
|
typeof(DataTemplate),
|
|
typeof(PasswordBoxWithButton),
|
|
new PropertyMetadata(null, (o, args) => { }));
|
|
|
|
public SelectableTemplateListView()
|
|
{
|
|
ContainerContentChanging += SelectableTemplateListView_ContainerContentChanging;
|
|
SelectionChanged += SelectableTemplateListView_SelectionChanged;
|
|
}
|
|
|
|
private void SelectableTemplateListView_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
|
|
{
|
|
args.ItemContainer.ContentTemplate = args.ItemContainer.IsSelected
|
|
? SelectedItemTemplate
|
|
: ItemTemplate;
|
|
}
|
|
|
|
private void SelectableTemplateListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
var listView = sender as ListView;
|
|
if (listView == null) return;
|
|
|
|
foreach (var item in e.AddedItems)
|
|
{
|
|
var listViewItem = listView.ContainerFromItem(item) as ListViewItem;
|
|
if (listViewItem != null) listViewItem.ContentTemplate = SelectedItemTemplate;
|
|
}
|
|
//Remove DataTemplate for unselected items
|
|
foreach (var item in e.RemovedItems)
|
|
{
|
|
var listViewItem = listView.ContainerFromItem(item) as ListViewItem;
|
|
if (listViewItem != null) listViewItem.ContentTemplate = ItemTemplate;
|
|
}
|
|
}
|
|
}
|
|
} |