[英]Border Background DataTrigger not changing
想要基於枚舉值更改邊框的屬性:
可見性和不透明度之類的東西似乎發生了變化,但背景或邊框未變……
<Border Background="{StaticResource Gradient3}"
BorderBrush="Green" BorderThickness="1"
Height="25" Width="25" CornerRadius="25">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Style.Triggers>
<DataTrigger Binding="{Binding Operation}" Value="0"> <!-- Idle -->
<Setter Property="Visibility" Value="Hidden"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Operation}" Value="1"> <!-- Failure -->
<Setter Property="BorderBrush" Value="Red"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Operation}" Value="2"> <!-- Success-->
<Setter Property="BorderBrush" Value="Purple"></Setter>
<Setter Property="Background" Value="Purple"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Operation}" Value="3"> <!-- Running -->
<Setter Property="BorderBrush" Value="Purple"></Setter>
<DataTrigger.EnterActions>
<BeginStoryboard Name="abc">
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0" To="1" Duration="0:0:1"
RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="abc"/>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBlock FontWeight="ExtraBold" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center">?</TextBlock>
</Border>
此代碼將觸發它:
private void ExecuteTestConnectionCommand(ConnectionString connection)
{
ThreadPool.QueueUserWorkItem(
o =>
{
Operation = OperationStatus.Running;
try
{
_connectionTester.Connect(connection);
IsBusy = true;
Operation = OperationStatus.Success;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
Operation = OperationStatus.Failure;
}
// Do something
DispatcherHelper.CheckBeginInvokeOnUI(
() =>
{
// Dispatch back to the main thread
IsBusy = false;
// without this the button stays disabled until a ui interaction occurs
System.Windows.Input.CommandManager.InvalidateRequerySuggested();
});
});
}
您直接在Border
上設置Background
。 這稱為本地值 ,並且本地值優先於任何其他來源(包括樣式/模板觸發器和設置器)設置的值。 嘗試從Border
聲明中刪除Background="{StaticResource Gradient3}"
,向您的Style
添加一個Setter
來設置默認背景:
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="Background" Value="{StaticResource Gradient3}" />
...
您需要對要使用觸發器更新的任何其他值執行相同的操作,例如BorderBrush
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.