奇怪的silverlight绑定问题

时间:2012-07-12 11:17:16

标签: c# silverlight xaml

我有一个奇怪的问题。我有两个堆栈面板,每个堆栈面板都有一个按钮,两个堆栈面板的数据上下文相同,按钮上的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>

我没有在输出窗口中看到任何数据绑定错误。有什么东西我不见了吗?

1 个答案:

答案 0 :(得分:2)

这可能是因为你在第一个按钮中的命令:

cal:Click.Command="{Binding AddBarcodeCommand}

如果该命令为其定义了CanExecute方法,则当该方法返回false时,它将禁用该按钮。

它也可能适用于SaveCommand

我会删除IsEnabled绑定并让CanExecute执行它的操作,因为这是命令点, 但您也可以修复 CanExecute逻辑或删除它并让IsEnabled绑定工作。