Я делаю простое приложение с WPF и привязываю одно из окон к модели представления. Модель представления нуждается в нескольких ссылках во время выполнения, чтобы получить необходимые данные, поэтому моя модель представления имеет конструктор с параметрами. У меня также есть конструктор без параметров, который можно использовать во время проектирования для проверки внешнего вида окна.
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда существует конструктор с параметрами, Visual Studio отображает ошибку:
'Тип "SettingsViewModel" не включает никаких доступных конструкторов.'
Если я закомментирую конструктор времени выполнения, ошибок не будет, и все будет работать как положено.
Кроме того, я попытался сделать приватный конструктор частным и показать его с помощью фабричного метода, который не имел никакого эффекта. Я попытался закомментировать код с выделенным кодом, ссылающийся на второй конструктор. Я также попытался очистить решение, перезапустить Visual Studio, а затем перестроить.
Пока единственное, что я нашел для работы, это закомментирование конструктора времени выполнения и любых ссылок на него. Также, чтобы было ясно, я пока не использую экземпляр SettingsViewModel, на данный момент я просто пытаюсь определить его как ресурс.
SettingsWindow.xaml:
<Window.Resources>
<local:SettingsViewModel x:Key="DevelopTimeModel" />
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="BorderBrush" Value="Gray"></Setter>
<Setter Property="BorderThickness" Value="1"></Setter>
<Setter Property="Padding" Value="2 3"></Setter>
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="#00000000"></Setter>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="LightGray"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
SettingsWindow.xaml.cs
public SettingsWindow(Autodesk.Revit.UI.UIApplication app)
{
InitializeComponent();
SettingsViewModel viewModel = SettingsViewModel.GetRuntimeViewModel(app, this);
this.DataContext = viewModel;
MainListBox.SelectionChanged += (o, e) => viewModel.RefreshCommands();
}
SettingViewModel.cs
public SettingsViewModel()
{
//creation of design-time data here
}
public static SettingsViewModel GetRuntimeViewModel(UIApplication app, SettingsWindow settingsWindow)
{
return null;// new SettingsViewModel(app, settingsWindow);
}
private SettingsViewModel(UIApplication app, SettingsWindow settingsWindow)
{
ContextRouter = new RevitContextRouter(app, this.ToString());
members.PropertyChanged += (o, e) => NotifyPropertyChanged("Members." + e.PropertyName);
Commands = new SettingsCommands(this);
LoadSettings();
SettingsWindowRef = settingsWindow;
settingsWindow.Closed += (s,e) => SaveSettings() ;
}
Любая помощь избавиться отэто сообщение об ошибке и аналогичные, когда они появляются, будет оценено.