C# 绑定到代码隐藏

C# 绑定到代码隐藏,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我正在将一个非常旧的控件修改为MVVM类型的控件。我有一张闹钟的清单。当用户按下列标题中的按钮时,我必须清除可见报警列表并滚动到下一个报警,以便第一个不可见的报警 我在列标题的控件模板中创建了按钮。command属性可以工作,但它返回一个NaN,因此我认为command参数绑定到窗口可见部分的高度是不正确的。当我调试代码时,属性高度确实包含一个数字 XAML: } ViewModel: public class AlarmListViewModel : MainViewModelBase

我正在将一个非常旧的控件修改为MVVM类型的控件。我有一张闹钟的清单。当用户按下列标题中的按钮时,我必须清除可见报警列表并滚动到下一个报警,以便第一个不可见的报警

我在列标题的控件模板中创建了按钮。command属性可以工作,但它返回一个NaN,因此我认为command参数绑定到窗口可见部分的高度是不正确的。当我调试代码时,属性高度确实包含一个数字

XAML:

}

ViewModel:

public class AlarmListViewModel : MainViewModelBase
    {
private readonly IActionCommand _acknowledgeCommand;
        public IActionCommand AcknowledgeCommand
        {
            get { return _acknowledgeCommand; }
        }
public AlarmListViewModel()
        {
            //Add command
            _acknowledgeCommand = new ActionCommand<double>(p => Acknowledge(p));
        }
private void Acknowledge(double parameter)
        {
            try
            {               
                double DatagridWidth = (double)parameter;
                int AmountAcknowledged = (int)Math.Floor(DatagridWidth / RowHeight);
                int LastAlarmSent = Alarms[0].AlarmNumber + AmountAcknowledged;
                _proxy.Send(LastAlarmSent);
                SelectedAlarm = Alarms[LastAlarmSent + 1];
            }
            catch (Exception ex)
            {
                _viewManager.ShowDialog(new MessageDialogViewModel()
                {
                    AskAnswer = false,
                    Text = ex.Message,
                    Title = TranslatedResources.AlarmAckSendErrorTitle,
                });
            }

        }
     }

我想如果你用usercontrol初始化你的属性,它会工作的

   public AlarmList()
    {
        InitializeComponent();

        Height = this.ActualHeight;
    }
或者像这样更改CommandParameter:

 CommandParameter="{Binding ActualHeight .....

试着结合实际情况。你应该在你的答案中提供更多的解释,而不是仅仅发布几行代码。你是对的,我正在微调和改进答案。这很有魅力,谢谢你。但是为什么这会像我做的那样工作并绑定高度,不是吗?height=>获取或设置元素的建议高度。ActualHeight readonly=>获取此元素的渲染高度。啊,我明白了,谢谢。这也许是个愚蠢的问题,但为什么它得到的是窗口高度而不是行标题的高度,因为它实际上绑定在行标题内?
   public AlarmList()
    {
        InitializeComponent();

        Height = this.ActualHeight;
    }
 CommandParameter="{Binding ActualHeight .....