我遇到了奇怪的问题。我有一个带按钮的表格。我将按钮的背景颜色设置为Blue
,它看起来像下图。
当我将鼠标移到它上面时,它会变成淡蓝色。
现在我按下鼠标左键而不离开按钮,将鼠标拖到按钮边界之外,然后单击鼠标左键。然后按钮开始闪烁并改变这两个图像之间的颜色,并且永远不会停止,直到我点击任何其他控件。另外,我有一个附加到此控件的命令。如果我单击此控件然后执行命令,再次按钮开始在这两个图像之间闪烁,并且永远不会停止,直到我单击任何其他控件,如文本框,复选框或其他内容。任何人都可以帮助我理解这一点。
下面是按钮的XAML。
<Button x:Name="BtnConvert" Content="Start Conversion Process"
Margin="0,436,433,0"
Height="108" Command="{Binding StartConvertProcess}"
VerticalAlignment="Top" HorizontalAlignment="Right"
Width="236" FontSize="14" Background="#FF5998B6"/>
修改
ViewModel代码
private void StartConvertProcessMethod()
{
string errorMessage;
bool result = _model.ConvertFiles(SourcePath, TargetPath, DataSource, out errorMessage);
string caption;
MessageBoxIcon messageBoxIcon;
if (result)
{
caption = "Completed";
messageBoxIcon = MessageBoxIcon.None;
}
else
{
caption = "Completed with Errors";
messageBoxIcon = MessageBoxIcon.Error;
}
MessageBox.Show(errorMessage, caption, MessageBoxButtons.OK, messageBoxIcon);
}
答案 0 :(得分:0)
我通过为我的按钮定义ControlTemplate解决了这个问题。像这样:
<ControlTemplate TargetType="{x:Type Button}" x:Key="PlainButtonTemplate">
<Border x:Name="bdr_main" BorderThickness="1" BorderBrush="LightGray" CornerRadius="6" Background="Transparent">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0" ContentSource="Content" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="bdr_main" Property="Background" Value="Transparent"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="bdr_main" Property="Background" Value="Gainsboro"/>
</Trigger>
</ControlTemplate.Triggers>
然后将模板应用于您的按钮。
<Style x:Key="PlainButton" TargetType="{x:Type Button}">
...
<Setter Property="Template" Value="{DynamicResource PlainButtonTemplate}"></Setter>
...
</Style>
将模板和样式放在单独的ResourceDictionary中,然后在页面中引用字典,使用按钮:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary x:Key="Dict" Source="ResourceDictionaries\ButtonsDictionary.xaml" />
</ResourceDictionary>
</Window.Resources>