【发布时间】:2014-06-02 05:25:46
【问题描述】:
我正在尝试使用 UiElement 从我的代码中执行绑定命令。 button.Command.Execute(button.CommandParameter)
但是,此时按钮的Command 属性为空。同时,当我在视图模型中检查命令时,属性已设置。我能想到的唯一诊断是,在窗口实际可见之前,命令不会绑定到按钮的命令属性。我觉得我可能在某处遗漏了一步,或者我的实施不健全。下面是一些代码片段,如果您需要更多,请告诉我。
窗口构造函数:
public PlottingViewModel ViewModel { get; set; }
public PlottingGUI()
{
InitializeComponent();
DataContext = (ViewModel = new PlottingViewModel());
_setDefaultSelections();
}
IList<RadioButton> buttons;
设置默认选择:
private void _setDefaultSelections()
{
buttons = new List<RadioButton>();
_getRadioButtons(this);
foreach (var setting in ViewModel.Settings.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
var settingValue = setting.GetValue(ViewModel.Settings);
var button = buttons.FirstOrDefault(btn => btn.Content.Equals(settingValue)
|| ((string)btn.CommandParameter).Equals(settingValue));
if (button == null)
continue;
button.IsChecked = true;
// NullReference here
// button.Command.Execute(button.CommandParameter);
}
}
RadioButtons XAML 之一:
<RadioButton Content="None"
Grid.Row="0"
Command="{Binding StampedCommand}"
CommandParameter="None"
Foreground="WhiteSmoke"/>
我觉得,我可能能够成功完成此任务的唯一方法是直接从我的视图模型中执行命令。 (我不想这样做)
感谢阅读..
【问题讨论】:
-
您是否尝试在
Loaded事件中调用_setDefaultSelections?
标签: c# xaml data-binding mvvm viewmodel