У меня есть Net Framework 4.7.2. Приложение, которое я пишу в WPF / C#.
Я пытаюсь связать заголовок Main Windows 'со свойством в его контексте данных, PartyName, но продолжаю получать ошибку во время выполнения .
Вот XAML для окна:
<Window x:Class="MyDM.View.Windows.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MyDM.ViewModel"
xmlns:ctrl="clr-namespace:MyDM.View.Controls"
Height="778"
Width="459"
Title="{Binding Path=PartyName, Mode=OneWay, Converter={StaticResource MainTitle}}"
Background="White"
WindowStartupLocation="CenterScreen">
<Window.DataContext>
<vm:MainWindowVM/>
</Window.DataContext>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\Dictionaries\ConverterDictionary.xaml"/>
<ResourceDictionary Source="..\Dictionaries\StyleDictionary.xaml"/>
<ResourceDictionary Source="..\Dictionaries\TemplateDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
...
</Window>
И это класс для DataContext:
public class MainWindowVM : Notifier
{
#region Private Data
private string thePartyName;
private ObservableCollection<PlayerCharacter> theCharacters;
private int theSelectedIndex;
#endregion Private Data
#region Public Properties
public string PartyName
{
get { return thePartyName; }
protected set
{
thePartyName = value;
OnPropertyChanged("PartyName");
}
}
public ObservableCollection<PlayerCharacter> Characters
{
get { return theCharacters; }
set
{
theCharacters = value;
OnPropertyChanged("Characters");
}
}
public int SelectedIndex
{
get { return theSelectedIndex; }
set
{
theSelectedIndex = value;
OnPropertyChanged("SelectedIndex");
}
}
public MainWindowVM()
{
thePartyName = string.Empty;
theCharacters = new ObservableCollection<PlayerCharacter>();
}
}
}
Всякий раз, когда я запускаю приложение, я получаю ошибку :
System. Windows .Markup.XamlParseException HResult = 0x80131501
Message = 'Предоставить значение для' System. Windows .StaticResourceExtension 'вызвало исключение.' Номер строки '8' и позиция строки '9'.
Source = PresentationFramework StackTrace: at System. Windows .Markup.WpfXamlLoader.Load (XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, логические объекты-пропуска, базовые объекты-объекты, объекты-логические объекты, )
Это исключение было первоначально сгенерировано в этом стеке вызовов: System. Windows .StaticResourceExtension.ProvideValueInternal (System.IServiceProvider, bool) System. Windows .StaticResourceExtension.ProvideValue (System.IServiceProvider) MS.Internal .Xaml.Runtime.ClrObjectRuntime.CallProvideValue (System. Windows .Markup.MarkupExtension, System.IServiceProvider)
Внутреннее исключение 1: исключение: не удается найти ресурс с именем «MainTitle». Имена ресурсов чувствительны к регистру.
Строка № 8, позиция 9 относится к строке «Заголовок» в Windows XAML. Кроме того, по какой-то причине элемент:
<vm:MainWindowVM/>
имеет ошибку «Ссылка на объект не установлена на Экземпляр объекта», которая, я думаю, связана с ошибкой Bind.
Все остальные привязки работают нормально.
Может кто-нибудь из вас, умные люди, посоветовать мне, почему я не могу связать заголовок вдовы и почему я получаю ошибку "Ссылка на объект не установлена ..."?
Многие заранее спасибо, и держите в целости и сохранности.