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であることに気づきました。それが問題ですね。