83 lines
2.9 KiB
C#
83 lines
2.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
using Sandbox.ModAPI;
|
|
using Sandbox.ModAPI.Interfaces;
|
|
using Torch.Server.ViewModels.Blocks;
|
|
using VRage.Game.ModAPI;
|
|
|
|
namespace Torch.Server.Views.Blocks
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for BlockView.xaml
|
|
/// </summary>
|
|
public partial class BlockView : UserControl
|
|
{
|
|
public BlockView()
|
|
{
|
|
InitializeComponent();
|
|
|
|
ThemeControl.UpdateWeirdViews += UpdateResourceDict;
|
|
UpdateResourceDict(ThemeControl.currentTheme);
|
|
}
|
|
|
|
public void UpdateResourceDict(ResourceDictionary dictionary)
|
|
{
|
|
this.Resources.MergedDictionaries.Clear();
|
|
this.Resources.MergedDictionaries.Add(dictionary);
|
|
}
|
|
|
|
/*
|
|
public void SetTarget(BlockViewModel model)
|
|
{
|
|
DataContext = model;
|
|
Stack.Children.Clear();
|
|
|
|
var propList = new List<ITerminalProperty>();
|
|
model.Block.GetProperties(propList);
|
|
foreach (var prop in propList)
|
|
{
|
|
Type propType = null;
|
|
foreach (var iface in prop.GetType().GetInterfaces())
|
|
{
|
|
if (iface.IsGenericType && iface.GetGenericTypeDefinition() == typeof(ITerminalProperty<>))
|
|
propType = iface.GenericTypeArguments[0];
|
|
}
|
|
|
|
var modelType = typeof(PropertyViewModel<>).MakeGenericType(propType);
|
|
var vm = Activator.CreateInstance(modelType, prop, model.Block);
|
|
|
|
var label = new Label { Content = $"{prop.Id}: "};
|
|
var textBox = new TextBox { Margin = new Thickness(3) };
|
|
var binding = new Binding("Value") {Source = vm};
|
|
textBox.SetBinding(TextBox.TextProperty, binding);
|
|
var stack = new DockPanel {Children = {label, textBox}, LastChildFill = true};
|
|
Stack.Children.Add(stack);
|
|
}
|
|
|
|
/*
|
|
var properties = model.PropertyWrapper.GetType().GetProperties();
|
|
foreach (var property in properties)
|
|
{
|
|
var control = new TextBox {Margin = new Thickness(3), Text = property.GetValue(model.PropertyWrapper).ToString()};
|
|
var bindingPath = $"{nameof(model.PropertyWrapper)}.{property.Name}";
|
|
var binding = new Binding {Path = new PropertyPath(bindingPath), Source = model};
|
|
BindingOperations.SetBinding(control, TextBox.TextProperty, binding);
|
|
Stack.Children.Add(control);
|
|
}
|
|
}*/
|
|
}
|
|
}
|