私は、(InitializeComponents()
を呼び出すだけのデフォルトのコンストラクタを使用して)インスタンス化された後に、別のDataContext
、具体的にはViewModelのインスタンスが与えられたクラスの小さなValueConverter
を試してみたいと思います。 Binding
内StaticResource
を使用してDataContextスイッチの後にValueConverterを使用する
はDataContext
はそれ以来変更されているので、(もうthis
ではありません)、(NullReferenceException
を生み出す)すべてでは動作しません。
InitializeComponents
の前にDataContext = this;
を入れてみましたが、変更はありません。 MarkupExtension
ギズモを調べるべきでしょうか(in this articleと記載されています)?
また、カスタムValue Converter
のインスタンスをViewModel(現在のDataContext
)内に作成しようとしましたが、どちらも役に立ちません。
私はいつでも追加の詳細を提供することができます。前もって感謝します !
私はTextBlock内にContextMenuを表示しようとしています。 ContextMenuには唯一のMenuItemが含まれています。例えば、MenuItemのヘッダーは「設定」にすることができます。前記MenuItemの子(MenuItemsとしても同様に表示される)は、Enumから得られ、従ってMenuItemのItemsSourceである。
すべてがうまく表示されていますが、既定の設定が既に存在するため、子供の1人(例:列挙体のメンバー)をデフォルトごとに選択しようとしています。詳細な背景情報はmy other questionにあります。
編集:
...
<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だと気付きました。それが問題ですね。
1. DataContextはStaticResourceバインディングに影響しません。 2.拘束力のあるxamlのラインを提供してください。 –
編集中です。 – Dr1Ku
DisplayTypeValuesはどこですか?定義を見ることができません。また、DisplayTypeToDefaultValueConverterのコードも参考になります。 –