1

WPF を使用して C# で単純なレジスタを開発しようとしています。製品用のボタンがあり、(キーボード ショートカットまたはマウス ボタンを使用して) ボタンを押すと、製品が注文されます。所有している (データベースから読み込まれる) 製品の数がわからないので、固定ソリューションは必要ありません。Listboxオブジェクトへのバインドを介してこれらのボタンを表示することができました。

<ListView.ItemTemplate>
    <DataTemplate>
        <UniformGrid>
            <Button Template="{DynamicResource ButtonBaseControlTemplate1}" Style="{StaticResource ButtonStyle1}" Command="{Binding OrderCommand}" CommandParameter="{Binding}">
                <Button.Background>
                    <ImageBrush ImageSource="{Binding PictureUrl}" />
                </Button.Background>
                <DockPanel>
                    <TextBlock Text="{Binding Name}" FontSize="30"  DockPanel.Dock="Top" HorizontalAlignment="Center" Margin="0, 25, 0, 0"/>
                    <TextBlock Text="{Binding Price}" FontSize="15" HorizontalAlignment="Left" Margin="5"/>
                    <TextBlock Text="{Binding Shortcut}" FontSize="15" HorizontalAlignment="Right" DockPanel.Dock="Bottom" VerticalAlignment="Bottom" Margin="5"/>
                </DockPanel>
            </Button>
        </UniformGrid>
    </DataTemplate>
</ListView.ItemTemplate>

a のバインドはCommand機能しません。ボタンをクリックしても何も起こりません。イベントを使用するとClicked、すべて正常に動作しますが、ボタンにバインドされたオブジェクトがパラメータとして必要です。

これが私のコマンドプロパティです:

public RelayCommand OrderCommand
{
    get
    {
        return new RelayCommand((p) => MessageBox.Show("Test"), (p) => true);
    }
}

MessageBoxすべてが意図したとおりに機能する場合は、 「テスト」が表示されるはずです。

事前にご協力いただきありがとうございます。

よろしく、ステファン

4

2 に答える 2

4

ウィンドウ/ユーザーコントロールのデータコンテキストで見つけるには、コマンドバインディングを更新する必要があります

コマンドが Windows DataContext にあると仮定する

Command="{Binding DataContext.OrderCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
于 2013-09-27T08:09:06.277 に答える
1

ボタンのデータコンテキストを変更する必要があります。現在のように、datacontext はリストビュー内のオブジェクトです。あなたが望むのは、リストビューのデータコンテキストを使用することです。

そんな感じ

Datacontext="{Binding DataContext, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
于 2013-09-27T08:09:12.573 に答える