Я хочу попробовать небольшой пользовательский ValueConverter
в классе, который после создания экземпляра (через конструктор по умолчанию, который вызывает только InitializeComponents()
), получает другой DataContext
, в частности, экземпляр ViewModel.
Использование StaticResource
в Binding
не работает вообще (дает NullReferenceException
), поскольку с тех пор DataContext
было изменено (больше не this
).
Я пытался поставить DataContext = this;
перед вызовом InitializeComponents
, без изменений.Должен ли я изучить эту MarkupExtension
штуковину (как описано в этой статье )?
Я также попытался создать экземпляр пользовательского Value Converter
в ViewModel (текущаяDataContext
), тоже не помогает.
Я могу предоставить дополнительную информацию в любое время.Заранее спасибо!
Я пытаюсь отобразить ContextMenu внутри TextBlock.ContextMenu содержит единственный MenuItem.Заголовок MenuItem может быть, например, «Настройки».Дочерние элементы (также представленные как MenuItems) указанного MenuItem происходят из Enum, следовательно, ItemsSource в MenuItem.
Теперь все отображается хорошо, но я пытаюсь создать одного из дочерних элементов (например,элемент Enum), который будет выбран по умолчанию, так как уже есть настройка по умолчанию.Дополнительную информацию можно найти в моем другом вопросе .
Редактировать :
...
<UserControl.Resources>
<Helpers:DisplayTypeToDefaultValueConverter x:Key="displayTypeConverter" />
</UserControl.Resources>
...
<TextBlock x:Name="InstructionLabel"
TextWrapping="Wrap" Text="{Binding Path=SelectedNodeText}"
Grid.RowSpan="1">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="Settings" Name="SettingsPop"
DataContext="{Binding}"
ItemsSource="{Binding Source={StaticResource DisplayTypeValues}}"
IsCheckable="True"
Click="SettingsType_Click">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding}"/>
<Setter Property="IsChecked">
<Setter.Value>
<Binding Converter="{StaticResource displayTypeConverter}" />
</Setter.Value>
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</ContextMenu>
</TextBlock>
Я только сейчас понял, что это ужасноКонтекстное меню.В этом проблема, не так ли?