我有一个按钮,当我使用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>
可能是什么问题?
祝你好运
答案 0 :(得分:1)
horaires
是否有名为RefreshCommand
的属性?我猜不是因为你说没有设置DataContext
就可以了。
您需要删除DataContext
绑定并更改AutomationProperties.Name
属性绑定以使用horaires
前缀,如下所示:
<Button AutomationProperties.Name="{Binding horaires.HomeAppBarTitle, Converter={StaticResource StringResourceConverter}}"
Command="{Binding RefreshCommand}" />
或者使用RelativeSource
或ElementName
绑定来查找在RefreshCommand
中包含DataContext
的UI元素。例如,
<Button DataContext="{Binding horaires}"
AutomationProperties.Name="{Binding HomeAppBarTitle, Converter={StaticResource StringResourceConverter}}"
Command="{Binding DataContext.RefreshCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
就个人而言,我会选择第一个,因为我希望尽可能避免明确设置DataContext
。 UI应该反映其背后的数据,并设置DataContext
手动更改此层次结构。