2010-11-01 2 views
0

У меня есть изображение, наложенное на элемент рассеивания. Элемент scatterview содержит stackpanel и несколько текстовых блоков. При наложении и укладывании фона основного окна в прозрачный, я все еще вижу углы, которые не хорошо приклеиваются к изображению.Округление углов элемента рассеивания - поверхность Microsoft SDK

Я использую поверхностное управление для добавления элементов поверхности в рассеивание. Код приведен ниже:

<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> 

Я хочу, чтобы метод обрезал углы круглой формы вместо прямоугольной формы.

ответ

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; 

Это предполагает, что вы являетесь вашим ScatterViewItem. Посмотрите на ScatterViewPuzzle из SDK, чтобы узнать, как создать пользовательскую форму для ScatterViewItem.

+0

Я попробовал этот код, в котором я создаю каждый элемент scatterview и заменить элемент = это, но он не работал. Углы выглядят округлыми, когда их обычно видят на заднем плане, однако, когда я перемещаю их по другому элементу рассеивания, показанная рамка снова является прямоугольником, а также показывает. Используя ваш код, я мог бы удалить тень, но углы по-прежнему проявлялись в прямоугольной форме при перекрытии. –

Смежные вопросы