ValueConverterインスタンス化された後(デフォルトのコンストラクターを介して、のみを呼び出すInitializeComponents())、別のDataContext、具体的にはViewModelのインスタンスが与えられるクラスで小さなカスタムを試してみたいと思います。
StaticResource内での使用Bindingはまったく機能しません(を生成します)。それNullReferenceException以降、DataContextは変更されているためです(もうありませthisん)。
私は電話のDataContext = this;前に置いてみましたが、変更はありません。このギズモInitializeComponentsを調べる必要がありますか(この記事で説明されています)?MarkupExtension
Value Converterまた、ViewModel(現在)内にカスタムのインスタンスを作成しようとしましたが、DataContextどちらも役に立ちません。
私はいつでも追加の詳細を提供することができます。前もって感謝します !
TextBlock内にContextMenuを表示しようとしています。ContextMenuには、唯一のMenuItemが含まれています。MenuItemのヘッダーは、たとえば「設定」にすることができます。上記のMenuItemの子(MenuItemとしてもレンダリングされる)はEnumに由来するため、MenuItemのItemsSourceになります。
これですべてがうまく表示されますが、デフォルトの設定がすでに存在するため、デフォルトごとに子の1つ(列挙型のメンバーなど)を選択するようにしています。さらなる背景情報は私の他の質問で見つけることができます。
編集:
...
<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であることに気づきました。それが問題ですね。