0

ボタンがあります。datacontextとコマンドを使用すると、コマンドが機能しません。

 <Button  DataContext="{Binding horaires}" Style="{StaticResource RefreshAppBarButtonStyle}" AutomationProperties.Name="{Binding HomeAppBarTitle, Converter={StaticResource StringResourceConverter}}"  Command="{Binding RefreshCommand}" ></Button>

datacontextを削除して名前を手動で設定すると、次のように機能します。

<Button Style="{StaticResource RefreshAppBarButtonStyle}" AutomationProperties.Name="Actualiser"  Command="{Binding RefreshCommand}" ></Button>

何が問題になるのでしょうか?

よろしくお願いします

4

1 に答える 1

1

horairesというプロパティがありますRefreshCommandか? 設定しなくても機能すると言ったからではないと思いますDataContext

次のようなプレフィックスを使用するには、バインディングを削除してプロパティ バインディングをDataContext変更する必要があります。AutomationProperties.Namehoraires

<Button  AutomationProperties.Name="{Binding horaires.HomeAppBarTitle, Converter={StaticResource StringResourceConverter}}"  
         Command="{Binding RefreshCommand}" />

または、RelativeSourceまたはElementNameバインディングを使用して、 にある UI 要素を見つけRefreshCommandますDataContext。例えば、

<Button  DataContext="{Binding horaires}"
         AutomationProperties.Name="{Binding HomeAppBarTitle, Converter={StaticResource StringResourceConverter}}"  
         Command="{Binding DataContext.RefreshCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />

DataContext個人的には、可能であれば明示的に設定することを避けたいので、最初のものを使用します。UI はその背後にあるデータを反映するはずであり、DataContext手動で設定するとこの階層が変更されます。

于 2012-10-15T16:01:16.837 に答える