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