情况很简单:我有一个WaitingBar的WPF UserControl 女巫的能见度很高。所以问题是当Control设置为visible时,“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>
答案 0 :(得分:3)
啊......再一次,有人加入这个网站,问另外一个问题基本上是说' .NET中的东西不起作用'。与此同时,所有这些问题的真实情况是,虽然.NET 实际中的一些东西不起作用......我们几乎可以依赖它们所有的工作绝大多数时间。
因此,您的答案与此处提出类似问题的所有人的答案相同...... Button
not 在UserControl
中禁用其自身(除非您停用UserControl
),因为他们不这样做......唯一可能的答案就是你已经禁用了它。很难向您显示您的错误,因为您没有包含所有相关代码(但请不要再添加)。
我可能会猜测,您可能已将IsEnabled
属性设置为false
事件处理程序中的Loaded
或类似内容。它不能在ApplicationButtonStyle
中,因为IsEnabled
上的true
属性设置为Button
会覆盖它。如果您以编程方式设置Button.Command
属性,那么您的CanExecute
方法可能始终返回false
?
在一天结束时,这确实是你的错误和你需要解决的问题。这里没有任何人可以帮助你进一步帮助你。您只需要仔细查看项目中使用此Button
的内容,在某个阶段,您将找到它。请记住...... Button
默认情况下不要禁用它们。
更新&gt;&gt;&gt;
嗯,你说你已经尝试了所有这些并没有帮助',但是由于你的问题仍然存在,你显然没有。我保证您的代码会禁用Button
。为了证明这一点,只需添加另一个Button
...清楚,它将不会被禁用。
试试这个......注释掉Button
并尝试构建项目。如果在任何地方都有Button
的引用,那么您将收到编译错误。如果没有编译错误,那么您可能有一个父容器控件,其IsEditable
属性设置为True
,从而禁用所有子控件。