C# 在wpf中单击一个按钮禁用其他按钮
我有一个应用程序,有两个选项卡,分别是A和B。两个选项卡都有两个按钮。除此之外,在标签外还有一个OK按钮。请参阅屏幕截图 我有3个视图模型,它们是SampleApplication、taba和tabb以及do绑定 示例应用程序XAMLC# 在wpf中单击一个按钮禁用其他按钮,c#,wpf,design-patterns,user-controls,C#,Wpf,Design Patterns,User Controls,我有一个应用程序,有两个选项卡,分别是A和B。两个选项卡都有两个按钮。除此之外,在标签外还有一个OK按钮。请参阅屏幕截图 我有3个视图模型,它们是SampleApplication、taba和tabb以及do绑定 示例应用程序XAML <DockPanel LastChildFill="True"> <TabControl TabStripPlacement="Left" DockPanel.Dock="Left" Margin="5"> &l
<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>
如何实施
当我单击Tab A按钮1或2时,将显示Tab B和OK中的按钮
残废
单击“确定”按钮时,选项卡A或B按钮将被禁用。
如果单击选项卡B按钮1或2,选项卡A和确定按钮将被禁用。
*禁用约5-10秒,然后按钮将启用返回
禁止使用prism框架等。这里的问题是您对该问题的思考不正确。问题不是如何禁用这些按钮?问题应该是按钮的“启用”状态是什么 要使其工作,按钮命令处理程序需要设置一些变量状态,使其他按钮禁用。请注意,这意味着您的两个选项卡之间可能存在不需要的依赖关系,但根据您的需求,这可能是不可避免的 基本上,你需要让你的按钮看起来像:
<Button IsEnabled="{Binding SomeProperty}" Command="{Binding SomeCommand}"/>
其中,SomeProperty由其他按钮的其他SomeCommand处理程序调用的函数更改
希望这是清楚的!如果您有任何问题,请告诉我。如果您使用的是ICommand,您可以将按钮订阅给彼此的CanExecuteChanged事件,以便在引发每个CanExecuteChanged事件后,从属按钮可以自行启用。您必须为每个命令添加一个CanExecuteChanged_处理程序,以便在调用该处理程序时,您可以检查发送者是谁并更改其canExecute状态。这可能很难进行跨用户控制。我认为你是在正确的轨道上,但这需要更多的细节。另外,CanExecute和CanExecuteChanged很难合作:@BradleyDotNET我同意你的看法。他必须找到一个可以初始化这些ICommand的公共位置。@berkeleyjuan各位,谢谢你们的回复,并将很快更新答案xDHi@BradleyDotNET,我能通过以下示例使用这种方法吗?不,那篇文章解决了我用另一个答案提出的问题。我尽可能避免使用静态类,所以除非我不得不这样做,否则我不会使用这种方法。您好,我将尝试您稍后提到的上述说法,谢谢yahi@BradleyDotNET这里是我创建的示例的链接,请随意查看,并帮助建议是否有改进或应用模式的方法。
<Button IsEnabled="{Binding SomeProperty}" Command="{Binding SomeCommand}"/>