0

scatterview アイテムにオーバーレイされた画像があります。scatterview アイテムには、stackpanel といくつかのテキストブロックが含まれています。メイン ウィンドウの背景を透明に重ねて配置すると、画像とうまく結合しない角がまだ見えます。

散布図にサーフェス アイテムを追加するために surfaceusercontrol を使用しています。コードは以下のとおりです。

<s:SurfaceUserControl x:Class="Models.ModelItemControl"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:s="http://schemas.microsoft.com/surface/2008" Width="110" Background="Transparent">

  <Grid>
    <Grid.Background>
      <ImageBrush ImageSource="pack://application:,,,/Resources/models_card_150-01.png" Opacity="1.0" Stretch="Fill" />
    </Grid.Background>
    <Viewbox >
    <StackPanel MaxWidth="250" MinHeight="300">
    <TextBlock Name="ItemTitle" Margin="5,5,5,5" TextWrapping="Wrap" Visibility="Visible" Padding="2" />
    <Image Name="ItemImage" Margin="5,5,5,5"  Visibility="Visible" MaxHeight="100"/>
    <TextBlock Name="ItemDesc"  Margin="5,5,5,0" TextWrapping="Wrap" Visibility="Visible" Padding="2" />
    <s:SurfaceToggleButton Checked="ItemInfo_Checked" Unchecked="ItemInfo_Unchecked" Margin="5,0,5,0" HorizontalAlignment="Center" VerticalAlignment="Center">Display more info</s:SurfaceToggleButton>
    </StackPanel>
    </Viewbox>
    </Grid>
</s:SurfaceUserControl>

角を長方形ではなく丸い形にクリップする方法が必要です。

4

2 に答える 2

1

おそらく、表示されるのは ScatterViewItems の影であり、UserControl ではありません。これを使用して、分離コードでシャドウを削除できます。

item.ApplyTemplate();
item.Background = new SolidColorBrush(Colors.Transparent);
item.ShowsActivationEffects = false;
Microsoft.Surface.Presentation.Generic.SurfaceShadowChrome ssc;
ssc = item.Template.FindName("shadow", item) as Microsoft.Surface.Presentation.Generic.SurfaceShadowChrome;
ssc.Visibility = Visibility.Hidden;

これは、item が ScatterViewItem であることを前提としています。SDK の ScatterViewPuzzle を見て、ScatterViewItem のカスタム形状を作成する方法を確認してください。

于 2010-11-11T10:39:26.440 に答える
0

MSDNにも投稿されていたので、回答へのリンクは以下に投稿されています。

scatterviewアイテムの角を丸める-MSDNフォーラム

于 2010-11-17T16:53:46.630 に答える