0

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

4

3 に答える 3

1

ItemContainerStyle内のDataContextは、DisplayTypeValuesコレクションのメンバーです。投稿したXAMLで、UserControlのDataContextの変更によって影響を受けるのは、InstructionLabelのテキストだけです。MenuItemで行っているようにDataContext="{Binding}"を設定することも、値が親ContextMenuからすでに継承されているため、冗長です。

質問やコードから、DataContextに何を期待しているのか、それを使って何をしようとしているのかが明確ではありません。

于 2010-12-01T16:35:37.417 に答える
0

いくつかの考え:

  1. バインディングパスの設定を見逃していません<Binding Converter="{StaticResource displayTypeConverter}" />か?
  2. スローされた例外のStackTraceとすべてのInnerExceptionsをチェックして、何か面白いものがあったかどうかを確認しましたか?
于 2010-12-01T15:58:56.373 に答える
0

私の他の関連する質問で強調されているように、より簡単な解決策を使用しました。
ご入力ありがとうございます!

于 2010-12-13T15:35:58.007 に答える