我有一個WPF的自定義實現ICommand
,它在BackgroundWorker
中執行綁定,以便UI保持響應。將樣式DataTrigger綁定到自定義ICommand的狀態屬性
我想在綁定正在執行時顯示自定義效果。目前,效果被簡化爲將命令源的IsEnabled
屬性設置爲False
。之後,我們的設計師將會推出一些不錯的進度式動畫。
這裏是什麼,我試圖做一個例子,工程(排序):
<Button Width="80"
Command="{x:Static Member=local:AppCommands.Test}"
DataContext="{x:Static Member=local:AppCommands.Test}">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsExecuting, Mode=OneWay}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
可以明顯看出,我ICommand
包含IsExecuting
屬性,該屬性設置爲True
而BackgroundWorker
執行其綁定的東西,從而禁用UI中的按鈕。
不幸的是,不必明確設置按鈕的DataContext
命令例如阻止我指的是原來的DataContext
的情況下,像這樣的:
<Button Width="80"
Command="{x:Static Member=local:AppCommands.ParamTest}"
CommandParameter="{Binding Path=SelectedItem}"
DataContext="{x:Static Member=local:AppCommands.ParamTest}">
這裏,CommandParameter
應綁定到窗口的DataContext
(這是設置爲我的視圖模型的一個實例),但它會綁定到對SelectedItem
一無所知的命令。
有可能有更多的方法來解決這個問題,我很有興趣聽到他們。我自己一直在思考如何使用附加屬性來替換命令的IsExecute
的直接綁定,並且需要設置DataContext
,但我還不確定如何執行此操作。
任何建議是最受歡迎的。謝謝!