0

我有一个按钮,当我使用 datacontext 和命令时,命令不起作用:

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

当我删除数据上下文并手动设置名称时,它的工作原理:

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

可能是什么问题?

最好的祝福

4

1 回答 1

1

horaires一个属性叫? RefreshCommand我猜不是因为你说它没有DataContext设置就可以工作。

您需要删除DataContext绑定并更改AutomationProperties.Name属性绑定以使用如下horaires前缀:

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

或者使用 a RelativeSourceorElementName绑定来查找包含你的 UIRefreshCommand元素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 回答