繁体   English   中英

一键单击禁用WPF中的其他按钮

[英]one button click disable others button in wpf

我有一个带有2个选项卡的应用程序,分别是A和B。两个选项卡都有2个按钮。 除了标签之外,还有1 OK按钮。 (请参阅屏幕截图)

在此处输入图片说明

我有3个视图模型 ,分别是SampleApplicationTab ATab 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 ();
    }
}

如何实施

  1. 当我单击“选项卡A按钮1或2”时,将禁用选项卡B和“确定”中的按钮。
  2. 单击确定按钮时,选项卡A或B按钮将被禁用。
  3. 如果单击选项卡B按钮1或2,将禁用选项卡A和确定按钮。

*(禁用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM