我想在一个类中尝试一个小的自定义ValueConverter
,在实例化之后(通过仅调用的默认构造函数InitializeComponents()
),给出另一个DataContext
,特别是 ViewModel 的实例。
在aStaticResource
中使用Binding
根本不起作用(产生 a NullReferenceException
),因为DataContext
从那时起已经改变了(this
不再是)。
我试过在打电话DataContext = this;
之前放InitializeComponents
,没有改变。我应该研究这个MarkupExtension
小发明(如本文所述)吗?
我还尝试Value Converter
在 ViewModel (当前DataContext
)中创建自定义实例,但也无济于事。
我可以随时提供更多详细信息。先感谢您 !
我正在尝试在 TextBlock 中显示 ContextMenu。ContextMenu 包含一个唯一的 MenuItem。例如,MenuItem 的标题可以是“设置”。所述 MenuItem 的子项(也呈现为 MenuItems)源自枚举,因此是 MenuItem 上的 ItemsSource。
现在一切都很好地显示了,但我正试图让其中一个孩子(例如枚举的成员)被默认选择,因为已经有一个默认设置。更多背景信息可以在我的另一个问题中找到。
编辑:
...
<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>
我现在才意识到这是可怕的 ContextMenu。这就是问题所在,不是吗?