Привязка превышения значения IntegerUpDown к CommandParameter
Я использую элемент управления Exceed IntegerUpDown в моем файле.xaml. Я хочу связать значение IntegerUpDown как CommandParameter кнопки.
У меня нет никакого кода позади файлов, и это файл xaml пользовательского контроля. Поэтому я хочу достичь этого, используя только системный xaml.
<DockPanel>
<xctk:IntegerUpDown x:Name="ExtraExpressionValue" Increment="1" FormatString="N0" AllowSpin="True" Width="70" Watermark="Numeric" AllowTextInput="False" Minimum="0" Value="999"/>
<Button Style="{StaticResource ContextMenuButton}" Margin="5,0,0,0" Content="Add" Command="{Binding SetExtaExpressionValueCommand}" CommandParameter="{Binding ElementName=ExtraExpressionValue,Path=Value}"/>
</DockPanel>
Выше мой код XAML. это возвращает 0 к методу команды.
Мой командный класс выглядит следующим образом:
public class DesignItemCommands
{
private ICommand setExtaExpressionValueCommand;
public ICommand SetExtaExpressionValueCommand => setExtaExpressionValueCommand ?? (setExtaExpressionValueCommand = new CommandHandler(SetExtaExpressionValue, canExecute));
private bool canExecute;
public DesignItemCommands()
{
canExecute = true;
}
private void SetExtaExpressionValue(object parameter)
{
//I need parameter here..
}
}
1 ответ
Решение
Не удалось найти способ по требованию. Просто пост здесь, чтобы помочь кому-то позже в этом вопросе.
Я использовал переменную ViewModel для привязки значения элемента управления IntegerUpDown.
<DockPanel>
<xctk:IntegerUpDown Increment="1" Value="{Binding ExtraExpressionValue}"/>
<Button Content="Add" Command="{Binding SetExtaExpressionValueCommand}"/>
</DockPanel>
Моя ViewModel выглядит следующим образом,
public class DesignItemCommands
{
private ICommand setExtaExpressionValueCommand;
public ICommand SetExtaExpressionValueCommand => setExtaExpressionValueCommand ?? (setExtaExpressionValueCommand = new CommandHandler(SetExtaExpressionValue, canExecute));
private bool canExecute;
public int ExtraExpressionValue { get; set; }
public DesignItemCommands()
{
canExecute = true;
ExtraExpressionValue = 1;
}
private void SetExtaExpressionValue(object parameter)
{
//I can use value here using variable ExtraExpressionValue
}
}
Надеюсь, это поможет кому-то позже.