2010-06-30 2 views
0

У меня есть следующий код XAML:свойство связывания Border.Clip RectangleGeometry.Rect Silverlight, в

<Border x:Name="ClippingBorder" VerticalAlignment="Stretch" BorderThickness="0"> 
    <Border.Clip> 
     <RectangleGeometry RadiusX="4.4" RadiusY="4.4" Rect="{Binding ClippingRectangle}"/> 
    </Border.Clip> 
</Border> 

И следующий CodeBehind:

private Rect clippingRectangle; 
    public Rect ClippingRectangle 
    { 
     get 
     { 
      return clippingRectangle; 
     } 
     set 
     { 
      clippingRectangle = value; 
      NotifyPropertyChanged("ClippingRectangle"); 

     } 
    } 


    public MainPage() 
    { 
     InitializeComponent(); 

     //Get the actual height of the content frame 
     ClippingBorder.DataContext = this; 
     ContentFrame.SizeChanged += new SizeChangedEventHandler(ContentFrame_SizeChanged); 
    } 

    void ContentFrame_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     MessageBox.Show(e.NewSize.Height.ToString()); 
     ClippingRectangle = new Rect(0,0,798,e.NewSize.Height); 
    } 

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

ответ

0

Оказывается, что настройка свойства Border.Clip в кодебеле устраняет проблему.

void ContentFrame_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     RectangleGeometry clipRect = new RectangleGeometry(); 
     clipRect.Rect = new Rect(0,0,798,e.NewSize.Height); 
     clipRect.RadiusX = 4.4; 
     clipRect.RadiusY = 4.4; 
     ClippingBorder.Clip = clipRect; 
    } 
2

Вы все еще можете связать с XAML на код ниже:

private RectangleGeometry clippingRectangleGeometry; 
    public RectangleGeometry ClippingRectangleGeometry 
    { 
     get 
     { 
      return clippingRectangleGeometry; 
     } 
     set 
     { 
      clippingRectangleGeometry= value; 
      NotifyPropertyChanged("ClippingRectangleGeometry"); 

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