mirror of
https://github.com/AlexMacocian/WpfExtended.git
synced 2026-07-24 03:56:28 +00:00
68 lines
2.0 KiB
C#
68 lines
2.0 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Extensions;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Media.Effects;
|
|
using WpfExtended.Tests.TestApplication.Models;
|
|
|
|
namespace WpfExtended.Tests.TestApplication.Controls
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for PropertyList.xaml
|
|
/// </summary>
|
|
public partial class PropertyList : UserControl
|
|
{
|
|
public ObservableCollection<EffectProperty> EffectProperties { get; } = new ObservableCollection<EffectProperty>();
|
|
|
|
public PropertyList()
|
|
{
|
|
this.InitializeComponent();
|
|
}
|
|
|
|
private void PropertyList_DataContextChanged(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
|
|
{
|
|
if (this.DataContext is not ShaderEffect shaderEffect)
|
|
{
|
|
return;
|
|
}
|
|
|
|
this.EffectProperties.ClearAnd().AddRange(shaderEffect.GetType().GetProperties()
|
|
.Where(pInfo => pInfo.PropertyType == typeof(double))
|
|
.Select(pInfo => new EffectProperty
|
|
{
|
|
Name = pInfo.Name,
|
|
Property = pInfo,
|
|
Value = (double)pInfo.GetValue(shaderEffect),
|
|
Source = shaderEffect
|
|
}));
|
|
}
|
|
|
|
private void TextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
|
|
{
|
|
if (sender is not TextBox textBox)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (textBox.DataContext is not EffectProperty effectProperty)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (e.Key is not System.Windows.Input.Key.Enter)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (!double.TryParse(textBox.Text, out var value))
|
|
{
|
|
return;
|
|
}
|
|
|
|
effectProperty.Value = value;
|
|
effectProperty.UpdateProperty();
|
|
}
|
|
}
|
|
}
|