2017-01-26 17 views
0

シンプルなような少し問題がありますが、解決方法がわかりません。 Visual Studioでは、WPFでこのアプリケーションを作成し、行と列を含むグリッド内にいくつかのボタンを配置しました。今すぐ私のアプリを起動するたびに、最初の行の最初のボタンがクリックされたように光ります。私は本当に奇妙に見え、私は自分のボタンを他のボタンのように見せたいと思う。それを止める可能性はありますか? おかげさまで、ありがとうございました。WPF:アプリケーション起動時にボタンが点滅します

+0

それが最初のボタンがフォーカスされていることだろうか?タブを押すと、グロー効果は別のボタンに移動しますか? – wkl

+0

はい、これはそれだと思います。このボタンは、アプリの起動時にデフォルトでフォーカスされます。しかし、他に焦点を置く可能性はまだありますか? – MaChaToc

+1

[this](http://stackoverflow.com/a/1343970/4011717)を試したり、 'Button.Focusable'をfalseに設定するとよいでしょう。 'TabIndex'を変更するとそれも解決するかもしれません。これらの方法はすべて異なる効果がありますので、慎重に選択してください... – wkl

答えて

0

説明する動作がフォーカスされたアニメーションの場合、Control.Focus()関数を使用して別のコントロールでフォーカスを設定できます。

another_control.Focus(); 

フォーカスを次のコントロールに設定するためにタブを叩いていることを確認できます。

+0

まあ、私はコントロールが最初に集中するようにしたくないです – MaChaToc

0

あなたは、Backgroundのようなあなたのボタンのすべてのプロパティを設定Styleでは、あなたのボタンのForegroundStyleを使用する必要があります。また、ボタンの様々なイベントのためにtriggersを割り当てることができます。これにより、ボタンが連続して点滅することを防ぎます。 XAMLでは以下

(私はボタンに青の色を設定していますデフォルトでは)上記のサンプルです

<Page> 
     <Page.Resources> 
       <Style TargetType="{x:Type Button}" x:Key="NonFocusButton"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type Button}"> 
          <Border Name="Border" 
         Background="Blue" 
         BorderBrush="Blue"> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="Button.IsPressed" Value="True"> 
            <Setter TargetName="Border" Property="BorderBrush" Value="Blue" /> 
           </Trigger> 
           <Trigger Property="IsMouseOver" Value="true"> 
            <Setter TargetName="Border" 
           Property="Background" Value="Blue" /> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 

     <Button x:Name"myButton" Style="{StaticResource NonFocusButton}" /> //Assign style here 
     </Page.Resources> 
    </Page> 
関連する問題