我有一个奇怪的问题。我有两个堆栈面板,每个堆栈面板都有一个按钮,两个堆栈面板的数据上下文相同,按钮上的IsEnabled属性也设置为相同的属性。然而,一个按钮被禁用,另一个按钮被启用:
StackPanel#1(启用):
<StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="1" Height="23" DataContext="{Binding ElementName=LayoutRoot, Path=DataContext}">
<TextBox Grid.Row="0" Grid.Column="1" Height="23" Width="220" Name="txtBarcode"></TextBox>
<Button IsEnabled="{Binding CanAdd}" cal:Click.Command="{Binding AddBarcodeCommand}" Width="40" Content=". . ." Margin="5,0"></Button>
</StackPanel>
StackPanel#2(已禁用):
<StackPanel Orientation="Horizontal" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right" DataContext="{Binding ElementName=LayoutRoot, Path=DataContext}" >
<Button HorizontalAlignment="Right" cal:Click.Command="{Binding ElementName=LayoutRoot, Path=DataContext.SaveCommand}" Grid.Row="3" Grid.Column="1" Height="30" Content="Create Batch" Width="130"></Button>
<Button IsEnabled="{Binding CanAdd}" Height="30" Content="Apply" Width="130" HorizontalAlignment="Right" Margin="5,0"></Button>
</StackPanel>
我没有在输出窗口中看到任何数据绑定错误。有什么东西我不见了吗?
答案 0 :(得分:2)
这可能是因为你在第一个按钮中的命令:
cal:Click.Command="{Binding AddBarcodeCommand}
如果该命令为其定义了CanExecute方法,则当该方法返回false时,它将禁用该按钮。
它也可能适用于SaveCommand
我会删除IsEnabled
绑定并让CanExecute
执行它的操作,因为这是命令点,
但您也可以修复 CanExecute逻辑或删除它并让IsEnabled绑定工作。