按钮在UserControl中禁用自己
本文关键字:自己 UserControl 按钮 | 更新日期: 2023-09-27 18:02:03
情况很简单:我有一个WaitingBar的WPF UserControl女巫的能见度受限。所以问题是'CancelButton'总是被禁用时,控制设置为可见。如果我删除可见性,绑定控件总是可见的,按钮是启用的。在Waitingbar的概述。Xaml按钮也被启用。怎么了?为什么按钮会自动禁用?
<UserControl x:Class="Neolant.Common.Ui.Wpf.Controls.WaitingBar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:commonControls="clr-namespace:Neolant.Common.Ui.Wpf.Controls"
d:DataContext="{d:DesignInstance Type=commonControls:Waitor, IsDesignTimeCreatable=False}"
Visibility="{Binding Path=IsWaiting, Converter={StaticResource BooleanToVisibilityConverter}}"
IsHitTestVisible="False" >
<Grid
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<!-- Фон -->
<Rectangle
Grid.Row="0" Grid.RowSpan="2"
Fill="LightGray" Opacity="0.5"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<StackPanel
Orientation="Vertical"
HorizontalAlignment="Center" VerticalAlignment="Center">
<!-- Анимация -->
<Canvas
Grid.Row="0"
x:Name="canvas"
HorizontalAlignment="Center" VerticalAlignment="Center"
Height="100" Width="100"
RenderTransformOrigin="0.5, 0.5">
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="rotation" Storyboard.TargetProperty="Angle"
From="0" To="360" Duration="0:0:3"
RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
<Canvas.RenderTransform>
<TransformGroup>
<RotateTransform x:Name="rotation" Angle="0"/>
</TransformGroup>
</Canvas.RenderTransform>
</Canvas>
<!-- Текст -->
<TextBlock
Grid.Row="1"
Text="{Binding Path=Text}"
FontSize="20"
Foreground="SlateGray"
Margin="5"
HorizontalAlignment="Center"/>
<!-- Прогресс бар-->
<ProgressBar
Grid.Row="2"
Height="25"
Minimum="0"
Maximum="100"
Name="pbMain"
Visibility="Hidden" />
</StackPanel>
<!--Кнопка отмены-->
<Button
Grid.Row="0"
x:Name="CancelButton"
Style="{StaticResource ApplicationButtonStyle}"
Width="50"
Height="50"
Margin="0,0,0,62"
IsEnabled="True">
<Path Data="{StaticResource CloseIconGeometry}" />
</Button>
</Grid>
啊…再一次,有人加入这个网站问另一个问题,基本上是说"。net中的某些东西不工作"。与此同时,关于所有这些问题的真相是,虽然。net中有很少的东西实际上不起作用…我们几乎可以相信它们在绝大多数时间里都在工作。
因此,你的答案和这里所有问类似问题的人一样…Button
不不在UserControl
中禁用自己(除非您禁用UserControl
),因为它们不这样做…唯一可能的答案是你已经禁用了它。很难指出你的错误,因为你没有包括所有相关的代码(但请不要再添加了)。
我可以大胆猜测,也许,您已经将其IsEnabled
属性设置为false
在Loaded
事件处理程序或类似的东西。它不能在ApplicationButtonStyle
中,因为在Button
上将IsEnabled
属性设置为true
会覆盖它。如果您以编程方式设置了Button.Command
属性,那么也许您的CanExecute
方法总是返回false
?
Button
做了什么,在某个阶段,你会发现它。记住……默认情况下,Button
不会禁用它们。
更新>>>
嗯,你说你已经"尝试了所有这些方法,但都没有帮助",但你的问题仍然存在,显然你没有。我保证是你的代码禁用了Button
。为了证明这一点,只需添加另一个Button
…显然,它不会被禁用。
试试这个…注释掉Button
并尝试构建项目。如果在任何地方有任何对Button
的引用,那么您将得到一个编译错误。如果没有编译错误,则可能有一个父容器控件,其IsEditable
属性设置为True
,从而禁用所有子控件。