using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using Torch.Server.ViewModels.Blocks; using Torch.Server.Views.Converters; namespace Torch.Server.Views.Blocks { /// /// Interaction logic for PropertyView.xaml /// public partial class PropertyView : UserControl { public PropertyView() { InitializeComponent(); DataContextChanged += OnDataContextChanged; ThemeControl.UpdateDynamicControls += UpdateResourceDict; UpdateResourceDict(ThemeControl.currentTheme); } public void UpdateResourceDict(ResourceDictionary dictionary) { this.Resources.MergedDictionaries.Clear(); this.Resources.MergedDictionaries.Add(dictionary); } private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs args) { switch (args.NewValue) { case PropertyViewModel _: InitBool(); break; case PropertyViewModel _: InitStringBuilder(); break; default: InitDefault(); break; } } private void InitStringBuilder() { var textBox = new TextBox { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Stretch }; var binding = new Binding("Value") { Source = DataContext, Converter = new StringBuilderConverter()}; textBox.SetBinding(TextBox.TextProperty, binding); Frame.Content = textBox; } private void InitBool() { var checkBox = new CheckBox {VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Left}; var binding = new Binding("Value") { Source = DataContext }; checkBox.SetBinding(CheckBox.IsCheckedProperty, binding); Frame.Content = checkBox; } private void InitDefault() { var textBox = new TextBox { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Stretch}; var binding = new Binding("Value") { Source = DataContext }; textBox.SetBinding(TextBox.TextProperty, binding); Frame.Content = textBox; } } }