2016-12-22 76 views
2

私が開発しているWPFアプリケーションでは、すべてのScrollViewerコントロールは、表示されているコンテンツの周りに白い境界線を置き、この境界を削除する必要があります。ボーダーは私のカスタムスタイルの有無に関係なく存在します。
ウィンドウにAllowTransparencyを有効にしても、AllowTransparencyを無効にしておく必要があります。ウィンドウにはクロムなしの境界線があり、必要なドロップシャドウを適用する方法はAllowTransparencyをfalseにする必要があります。WPF ScrollViewer Borderを削除する方法

何それは次のようになります。ここでは enter image description here

は、右上隅のクローズアップです: enter image description here



嫌な白のボーダーが自分のアプリケーションの外観を台無しにし、行くために必要があること。私は親要素のすべての背景を非白色または透明色に設定しているので、それが通過する別の要素の背景であるとは信じられません。 AllowTransparencyを無効にしてクロムレスウィンドウを保持したまま、問題の境界線を削除するにはどうすればよいですか?



明確化のためのコード:このユーザーコントロールは、被災ScrollViewerの含まれています:hastebin.com/okudoyubal.xmlをして、このユーザーコントロール内の子である:hastebin.com/esiregapem.xml
わずかに変更されたメトロのテーマを使用する:http://www.mediafire.com/file/xjawcacw3gzk435/ModMetroTheme.zip
、ここでは、特定のScrollViewerのスタイルです:https://hastebin.com/uvulihekex.xml

+1

'ScrollViewer'の内容は何ですか? 'ScrollViewer'バックグラウンドプロパティは何に設定されていますか?問題を示し、そのXamlコードを投稿する、非常に単純なXAMLページを作成できますか?私は、 'ScrollViewer'を配置した' Grid'を持つ単純なWindowを作成しました。 'ScrollViewer'で設定した唯一のプロパティは、マージン10とライトブルーの背景を設定することでした。私は 'ScrollViewer'の中に 'Canvas'を配置しました。私はウィンドウに白い枠線が表示されません。 –

+0

このUserControlには、悩まされているScrollViewer https://hastebin.com/okudoyubal.xmlが含まれています。このUserControlの子はhttps:// hastebinです。com/esiregapem.xml – TiberiumFusion

+0

コードをコピーして白い枠線は表示されませんが、スクロールバーの表示が異なります。ここにスタイルを適用しましたか?あなたはそれを投稿することもできますか、それはおそらく国境を引き起こすものです。 – lena

答えて

0

私はもう少し学習し、回避策を見つけました。セル間の白い枠線は、ScrollViewerのグリッドの背景を示しています。あるいはむしろ、背景の欠如。透明に設定されている間は、透明ではなく、グリッドの背景色を変更して安価に解決することを決定します。しかし、ScrollViewerやその他のグリッドを使用している要素は、その背景が堅牢であるか、手動で設定する必要があります(セル境界線が表示されないグリッドを破壊する可能性があります)。

次の回避策は、私のアプリケーション内のすべての場所では動作しませんが、それはいくつかで動作します:

<Style x:Key="ScrollViewerStyle" TargetType="{x:Type ScrollViewer}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ScrollViewer}"> 
       <Grid Background="{x:Null}" SnapsToDevicePixels="True" UseLayoutRounding="True"> 
        <Grid.Effect> 
         <BlurEffect KernelType="Box" Radius="0"/> 
        </Grid.Effect> 

        // Content 

       </Grid> 
      ... 

ボックスを適用し、レイアウトの丸めを使用して、ピクセルにスナップ、透明の背景を設定しますblurが0になると、セル間のシースルーマージンが削除されます。さらに、私が知る限り、その効果による顕著なパフォーマンスの低下はありません。

おそらく、ぼかし効果は透明性を本質的に必要とし、その混乱したグリッドは実際に透明なセル境界を持つようにトリックします。


このセル境界を完全に削除する解決策がある場合は、それでも聞くのは大変です。

関連する問題