Мне нужен совет относительно того, как добавить функциональность в свой пользовательский элемент управления, все, что есть, является текстовым полем и двумя кнопками, которые увеличивают и уменьшают его значение, которое будет числовым.Добавление функциональности в пользовательский элемент управления
Что я не понимаю, это лучший способ добавить код для этой функции. Должен ли я использовать команды в моем настраиваемом коде управления? Вот код, у меня есть на данный момент:
XAML - Generic.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Controls">
<Style TargetType="{x:Type local:NumericUpDown}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:NumericUpDown}">
<Grid HorizontalAlignment="Center" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Column="0"
Padding="5"
Background="Gray"
Command="{Binding Source=NumBox, Path=Increase}">
<Button.Content>
<Path Data="M0,0 L1,0 0.5,1Z"
Width="6"
Height="6"
Fill="White"
Stretch="Fill"/>
</Button.Content>
</Button>
<TextBox x:Name="NumBox"
Grid.Column="1"
Text="0"
Padding="2" />
<Button Grid.Column="2"
Padding="5"
Background="Gray">
<Button.Content>
<Path Data="M0,1 L1,1 0.5,0Z"
Width="6"
Height="6"
Fill="White"
Stretch="Fill" />
</Button.Content>
</Button>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
NumericUpDown.cs
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace Controls
{
public class NumericUpDown : Control
{
static NumericUpDown()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(NumericUpDown),
new FrameworkPropertyMetadata(typeof(NumericUpDown)));
}
}
public static class Command
{
public static readonly RoutedUICommand Increase = new RoutedUICommand("Increase the number", "IncreaseCommand", typeof(Command));
}
public class IncreaseCommand : ICommand
{
public bool CanExecute(object parameter)
{
return false;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
MessageBox.Show("click!");
}
}
}
Очевидно, что у меня нет команды работает только однако, решил обратиться за советом, прежде чем продолжить.
Спасибо, будет иметь это в виду в будущем, однако первый ответ соответствует моим потребностям. –