1

ページにハブを配置しようとしていますが、バインディングが正しく機能していないようです。Template10 のハンバーガー サンプルを使用して、メイン ページにハブを配置しようとしました。私がテストしたように、既存のスタックパネルをハブ セクション内にカプセル化するだけですが、ボタン クリック イベントのバインディングが壊れているようです。

構築時のエラー:

オブジェクト参照がオブジェクト インスタンスに設定されていません

<HubSection>
    <DataTemplate>
        <StackPanel Grid.Row="1" VerticalAlignment="Top" Orientation="Horizontal"
        Padding="12,8,0,0">

            <controls:Resizer>
                <TextBox Width="200" MinWidth="200" MinHeight="60"
             Margin="0" Header="Parameter to pass"
             Text="{Binding Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
             TextWrapping="Wrap">
                    <Interactivity:Interaction.Behaviors>
                        <Behaviors:TextBoxEnterKeyBehavior>
                            <Core:CallMethodAction MethodName="GotoDetailsPage" TargetObject="{Binding}" />
                        </Behaviors:TextBoxEnterKeyBehavior>
                        <Core:EventTriggerBehavior>
                            <Behaviors:FocusAction />
                        </Core:EventTriggerBehavior>
                    </Interactivity:Interaction.Behaviors>
                </TextBox>
            </controls:Resizer>
            <Button Margin="12,0" VerticalAlignment="Bottom"
        Click="{x:Bind ViewModel.GotoDetailsPage}" Content="Submit" />
        </StackPanel>
    </DataTemplate>
</HubSection>
4

2 に答える 2

1

最後に、動作の相互作用を使用して、ボタンのクリックをバインディングで動作させることができました。以下はコードです。他の誰かがより良い提案を得た場合は、お気軽にコメントしてください。

    <Button Margin="12,0" VerticalAlignment="Bottom" Content="Submit" >
        <Interactivity:Interaction.Behaviors>
            <Core:EventTriggerBehavior EventName="Click">
                <Core:CallMethodAction MethodName="GotoDetailsPage" TargetObject="{Binding}" />
            </Core:EventTriggerBehavior>
        </Interactivity:Interaction.Behaviors>
    </Button>
于 2016-02-12T16:24:59.277 に答える
0

私は確かにあなたに問題を説明することができます。ハブ コントロールを使用していること、およびハブ コントロールがハブ セクションを使用していること、およびツールボックス内の他のほとんどのコントロールとは異なり、ハブ セクションがデータ テンプレートを使用してコンテンツを描画していることから、データ テンプレート内のすべての要素のデータ コンテキストはありません。外側のページのデータ コンテキストが長くなります。つまり、必要なメソッドを持たない新しいクラスにバインドしているため、バインディングは失敗します。

解決策として、これを行うことができました:

<Core:CallMethodAction MethodName="GotoDetailsPage" TargetObject="{Binding ElementName=ViewModel}" />

その構文は、コンテキストをページのビュー モデルに戻します。しかし、あなたの解決策はうまくいくようです。私は何がうまくいくかに固執します。

幸運を祈ります。

于 2016-02-12T21:51:43.953 に答える