簡體   English   中英

邊框背景DataTrigger不變

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM