0

私はWPFとMVVMを使用しています。

2 つの異なる方法でダイナミックを作成しましMenuたが、どちらも機能しません。

初め:

<DockPanel>
    <Menu DockPanel.Dock="Top" Height="auto" ItemsSource="{Binding MeuPaudi}">
        <Menu.Resources>
            <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}">
                <Setter Property="Command" Value="{Binding Path=MenuSelecionado}" />
                <Setter Property="Header" Value="{Binding Texto}" />
                <Setter Property="ItemsSource" Value="{Binding MenuFilhos}"/>
            </Style>
        </Menu.Resources>
    </Menu>
</DockPanel>

2番:

<Menu ItemsSource="{Binding MeuPaudi}">
    <Menu.ItemContainerStyle>
        <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}">
            <Setter Property="Header" Value="{Binding Path=Texto}"/>
            <Setter Property="IsCheckable" Value="{Binding Path=IsCheckable}"/>
            <Setter Property="ItemsSource" Value="{Binding Path=MenuFilhos}"/>
            <Setter Property="Command"  Value="{Binding MenuSelecionado}" />
        </Style>
    </Menu.ItemContainerStyle>
</Menu>

Buttonまた、コマンドが正しく機能するかどうかをテストするために も作成します。

<Button Command="{Binding Path=MenuSelecionado}"/>

そして、それは機能します。誰かが私を助けることができますか?

4

1 に答える 1

1

まず、バインディングが正常に機能していることを確認する必要があります。バインディングが機能していないかどうかを確認する簡単な方法は、バインディングにダミー コンバーターを追加し、Convert メソッドにブレークポイントを設定することです。ブレークポイントがヒットしない場合は、バインディングが起動されていないことを意味します。つまり、プロパティのパスが正しくないか、データ ソースがアタッチされていません。

また、Style:BasedOn も削除する必要があります。これは必須ではないためです。次のコードが機能するはずです。

<MenuItem Header="Main Menu" ItemsSource="{Binding MeuPaudi}">
    <MenuItem.ItemContainerStyle>
        <Style>
            <Setter Property="MenuItem.Header" Value="{Binding Texto}"/>
            <Setter Property="MenuItem.Command" Value="{Binding MenuSelecionado}"/>
        </Style>
    </MenuItem.ItemContainerStyle>
</MenuItem>
于 2013-10-16T00:54:17.107 に答える