2009-03-17 3 views
30

Я пытаюсь сделать углы окна (WPF) округлыми и не работает, я попытался сделать окно прозрачным и добавить внутреннюю границу с закругленными углами, и это не сработает.Как создать форму округлых углов в WPF?

Любые идеи?

+9

YAY! Мой первый вопрос! – Shimmy

ответ

32

необходимо установить WindowStyle в WindowStyle.None, в котором будет удален хром, тогда вы можете разрешить прозрачность, которая является атрибутом int элемент Window, и установить цвет фона прозрачным. Все это можно сделать в качестве атрибутов тега окна.

WindowStyle="None" 
AllowsTransparency="True" 
Background="Transparent" 

Для того, чтобы углы закруглены, используйте рамку и установить свойство cornerRadius

+1

Можете ли вы показать пример, чтобы установить границу !! – Moumit

2

Кроме того, необходимо сделать прозрачную рамку вокруг окна, что это несколько пикселей в ширину, или же края ваших закругленных углов получить отрезали

4

не используйте AllowsTransparency это медленный и глючный, посмотрите на эту ссылку, найдите раздел «Office 2007 без Aero - Или, вы несете ответственность за все»:

https://blogs.msdn.microsoft.com/wpfsdk/2008/09/08/custom-window-chrome-in-wpf/

EDIT: некоторые из методов в этом посте специфичны для Vista, но раздел «Office 2007 без Aero» работает на XP (и на самом деле описывает, какое программное обеспечение, написанное для Vista, должно возвращаться на XP) ,

+0

Действительно. В этой статье есть несколько хороших примеров. Я использовал эту технику несколько раз. –

+0

Моя проблема в том, что мне нужен мой проект для совместимости с XP. – Shimmy

+0

Shimmy, методы, описанные в этом разделе, совместимы с XP – Nir

2

это может помочь u.

<Grid DataContext="{Binding ElementName=root}"> 
    <Border Background="#90000000" Visibility="{Binding Visibility}"> 
     <Border BorderBrush="Black" BorderThickness="1" Background="AliceBlue" 
       CornerRadius="10,0,10,0" VerticalAlignment="Center" 
       HorizontalAlignment="Center"> 
      <Border.BitmapEffect> 
       <DropShadowBitmapEffect Color="Black" 
        Opacity="0.5" Direction="270" 
        ShadowDepth="0.7" /> 
      </Border.BitmapEffect> 
      <Grid Margin="10"> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition Height="Auto" /> 
       </Grid.RowDefinitions> 
       <TextBlock x:Name="MessageTextBlock" 
        Text="{Binding Message}" 
        TextWrapping="Wrap" Margin="5" /> 
       <UniformGrid Grid.Row="1" Margin="5" 
          Columns="2" HorizontalAlignment="Center" 
          VerticalAlignment="Bottom"> 
        <Button x:Name="OkButton" 
          Content="Ok" Margin="2" /> 
        <Button x:Name="CancelButton" 

          Content="Cancel" Margin="2" /> 
       </UniformGrid> 
      </Grid> 
     </Border> 
    </Border> 
</Grid> 
Смежные вопросы