2012-07-12 84 views
0

我有一個奇怪的問題。我有兩個堆棧面板,每個面板上都有一個按鈕,兩個堆棧面板的數據上下文都是相同的,並且按鈕上的IsEnabled屬性也設置爲相同的屬性。然而,一個按鈕被禁用,另一種是啓用:奇怪的silverlight綁定問題

的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> 

我沒有看到任何數據綁定錯誤在輸出窗口中。有什麼我失蹤了嗎?

回答

2

這可能是因爲在第一個鍵的命令:

cal:Click.Command="{Binding AddBarcodeCommand} 

如果命令具有爲它定義一個CanExecute方法,它將當方法返回false禁用按鈕。

它也適用於SaveCommand

我會刪除IsEnabled結合,讓CanExecute做它的事,因爲它是命令的點這樣做,
但你也可以修復的CanExecute邏輯或刪除它並讓IsEnabled綁定工作。