我正在試圖在Silverlight中圓角處創建一個矩形。但是,我沒有明確指定矩形的寬度和高度,這意味着它適應包含它的網格的大小(網格的大小取決於屏幕分辨率等等,並且在手之前不知道)。Silverlight中的圓角矩形
我希望RadiusX和RadiusY屬性分別是矩形寬度和高度的百分比。最乾淨的做法是什麼?是否只有XAML方式(不採用代碼隱藏方式)?
我正在試圖在Silverlight中圓角處創建一個矩形。但是,我沒有明確指定矩形的寬度和高度,這意味着它適應包含它的網格的大小(網格的大小取決於屏幕分辨率等等,並且在手之前不知道)。Silverlight中的圓角矩形
我希望RadiusX和RadiusY屬性分別是矩形寬度和高度的百分比。最乾淨的做法是什麼?是否只有XAML方式(不採用代碼隱藏方式)?
雖然賈斯汀國王的回答工作,如果在寬度和高度的手之前已知的代碼,如果他們不設置它不工作,和家長控制動態奠定了矩形的。不幸的是,在Silverlight中,你不能在ActualWidth和ActualHeight上使用Binding with Converters,因爲它們是計算屬性。這意味着當ActualWidth和ActualHeight發生更改時,屬性更改事件不會在內部引發,因此綁定不會將更改傳播到源。
實質上,在這一點上,唯一的選擇是訂閱LayoutUpdated事件並計算並設置代碼隱藏中的RadiusX和RadiusY屬性。
兩個下面要下載的文件我用重用測試此http://dl.dropbox.com/u/8679840/SilverlightApplication1.zip
最好的方法是創建一個類型轉換器像
<Grid x:Name="LayoutRoot" Background="White">
<Rectangle x:Name="rectangle"
Width="200" Height="200"
RadiusX="{Binding Width, ElementName=rectangle, Converter={StaticResource myConverter}, ConverterParameter=.1}"
RadiusY="{Binding Height, ElementName=rectangle, Converter={StaticResource myConverter}, ConverterParameter=.1}"
/>
</Grid>
背後
namespace SilverlightApplication1
{
public class PercentConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return System.Convert.ToDouble(value) * System.Convert.ToDouble(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
該主題說Silverlight,標籤說Silverlight,但第一句話說WPF。這是什麼? – AnthonyWJones
@AnthonyW瓊斯是銀光。感謝您指出了這一點。 –