[英]one button click disable others button in wpf
我有一个带有2个选项卡的应用程序,分别是A和B。两个选项卡都有2个按钮。 除了标签之外,还有1 OK按钮。 (请参阅屏幕截图)
我有3个视图模型 ,分别是SampleApplication , Tab A和Tab B并进行绑定。
样本应用程序XAML
<DockPanel LastChildFill="True">
<TabControl TabStripPlacement="Left" DockPanel.Dock="Left" Margin="5">
<TabItem Width="190" Margin="1">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Tab A" Margin="5,0,0,0" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<TabItem.ContentTemplate>
<DataTemplate>
<ptab:TabA />
</DataTemplate>
</TabItem.ContentTemplate>
</TabItem>
<TabItem Margin="1">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="TabB" Margin="5,0,0,0" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<TabItem.ContentTemplate>
<DataTemplate>
<ptab:TabB />
</DataTemplate>
</TabItem.ContentTemplate>
</TabItem>
</TabControl>
</DockPanel>
示例应用程序视图模型
public class SampleApplicationViewModel
{
private TabAViewModel tabAViewModel;
public TabAViewModel TabAVM
{
get { return tabAViewModel; }
set { tabAViewModel= value; }
}
private TabBViewModel tabBViewModel;
public TabBViewModel TabBVM
{
get { return tabBViewModel; }
set { tabBViewModel= value; }
}
public MainViewModel()
{
tabAViewModel= new TabAViewModel();
tabBViewModel= new TabBViewModel ();
}
}
如何实施
*(禁用5-10秒左右,然后将启用按钮)
不使用棱镜框架等
这里的问题是您正在错误地考虑该问题。 问题不是“如何禁用这些按钮?” 问题应该是“按钮的“启用”处于什么状态?
为了使其正常工作,按钮命令处理程序需要设置一些变量(状态),该变量会导致其他按钮禁用。 请注意,这意味着两个选项卡之间存在(可能是不希望的)依赖关系,但是根据您的要求,这可能是不可避免的。
基本上,您需要使按钮看起来像:
<Button IsEnabled="{Binding SomeProperty}" Command="{Binding SomeCommand}"/>
其中“ SomeProperty”由其他“ SomeCommand”处理程序(用于其他按钮)调用的函数更改。
希望多数民众赞成在清除! 如果您有任何疑问,请告诉我。
如果使用的是ICommand
,则可以将按钮彼此订阅CanExecuteChanged
事件,以便在引发每个相应的CanExecuteChanged
,依赖按钮可以启用自身。 您将必须向每个命令添加CanExecuteChanged_Handler
,以便在调用处理程序时,您可以检查发送方是谁,并更改其canExecute状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.