Я пытаюсь связать заголовок окна с ViewModel, у которого есть свойство Title. Ниже MainWindow XAML:WPF Bind Window Title to ViewModel Свойство
<Window x:Class="MyProject.View.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MyProject.ViewModel;assembly=MyProject.ViewModel"
Title="{Binding Path=Title}" Height="350" Width="525" DataContext="{Binding Source={StaticResource mainWindowViewModel}}">
<Window.Resources>
<vm:MainWindow x:Key="mainWindowViewModel"/>
</Window.Resources>
...
</Window>
Когда я пытаюсь запустить это, я получаю следующее исключение «Обеспечить значение на„System.Windows.StaticResourceExtension“бросил исключение номер строки и позиции точки к свойству DataContext. , а внутренние состояния исключений: «Не удается найти ресурс с именем mainWindowViewModel.
Ниже приведен код для представления модели:
namespace MyProject.ViewModel
{
public class MainWindow : INotifyPropertyChanged
{
#region Fields
private const string TitlebarPrefixString = "My Project";
private string title = TitlebarPrefixString;
public string Title {
get
{
return this.title;
} // End getter
set
{
this.title = value;
OnPropertyChanged("Title");
} // End setter
} // End property
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
} // End if
} // End method
public event PropertyChangedEventHandler PropertyChanged;
} // End class
} // End namespace
Моя теория состоит в том, что ресурсы загружаются после попытки связать право собственности на имущество. Когда выбрано исключение, свойство Resources для Window пусто.
является единственным решением, чтобы установить DataContext в код? Я могу заставить это работать, но я бы предпочел сохранить его в XAML.
Вы всегда можете переместить свой ресурс VM на app.xaml, если это применимо. В боковом названии, пожалуйста, назовите классы VM как «SomethingViewModel», а не просто то же имя, что и пространство имен «Просмотр» и «Использование», чтобы различать классы. Это просто очень странно и причудливо – Viv
Джош Смит пример этого я буду видеть, если я могу найти его, в основном, когда DataTemplate был применен в XAML название было применено слишком .. –