2015-10-13 78 views
0

我是非常新的在stackoverflow。我希望在這裏,我會找到答案。我的問題:我創建了一個用戶控件。在資源有如何綁定到資源sys:Double?

<sys:Double x:Key="BRadiusX" >5</sys:Double>

在控制模板:

<ControlTemplate TargetType="{x:Type Thumb}"> 
        <Rectangle x:Name="Ellipse" 
         StrokeThickness="1" 
           RadiusX="{DynamicResource BRadiusX}" 
           RadiusY="{DynamicResource BRadiusY}">..... 

現在我要綁定的5 在代碼中DependancyProperty:

public static DependencyProperty BorderRadiusXProperty = DependencyProperty.Register("BorderRadiusX", typeof(double), typeof(MySlider1), 
    new FrameworkPropertyMetadata(5.0, FrameworkPropertyMetadataOptions.AffectsRender)); 
    [Category("Thumb"), Description("XRadius of border round the thumb")] 
    public double BorderRadiusX 
    { 
     get { return (double)GetValue(BorderRadiusXProperty); } 


     set { SetValue(BorderRadiusXProperty, value); } 
    } 

有什麼辦法解決這個問題?

非常感謝轉發

回答

0

在代碼(構造函數實例),您可以:

double radius = (double)Resources["BRadiusX"] 

然後,您可以:

BorderRadiusX = radius; 

它不是一個真正的數據綁定,它只是資源查找。 如果你需要數據綁定,它比較複雜,但是對於不可變的雙重數據,我不確定它對數據綁定是否有用。

資源是應用程序或FrameworkElements的屬性,如Windows,UserControls,Grid。

問候

+0

好主意!該代碼是滑塊UserControl的一部分。 Iam使用控制模板更改Thumb等。安裝在應用程序中時,您應該能夠更改usercontrol屬性窗口中的某些設置。但是通過這種方式,它總是變回「5」或者任何你在資源中的前綴。任何其他的想法。 – HermannG

+0

現在我找到了答案。一切都很好! – HermannG

+0

這是我的代碼: – HermannG

0
public MySlider1() 
    { 
     InitializeComponent(); 

     Resources["BRadiusX"] = BorderRadiusX; 
     Resources["BRadiusY"] = BorderRadiusY; 
    } 

    protected override void OnRender(DrawingContext drawingContext) 
    { 
     base.OnRender(drawingContext); 

     Resources["BRadiusX"] = BorderRadiusX; 
     Resources["BRadiusY"] = BorderRadiusY; 
    } 

    public static DependencyProperty BorderRadiusXProperty = DependencyProperty.Register("BorderRadiusX", typeof(double), typeof(MySlider1), 
    new FrameworkPropertyMetadata(5.0, FrameworkPropertyMetadataOptions.AffectsRender)); 
    [Category("Thumb"), Description("XRadius of border round the thumb")] 
    public double BorderRadiusX 
    { 
     get { return (double)GetValue(BorderRadiusXProperty); } 


     set { SetValue(BorderRadiusXProperty, value); } 
    } 

    public static DependencyProperty BorderRadiusYProperty = DependencyProperty.Register("BorderRadiusY", typeof(double), typeof(MySlider1), 
    new FrameworkPropertyMetadata(5.0, FrameworkPropertyMetadataOptions.AffectsRender)); 
    [Category("Thumb"), Description("YRadius of border round the thumb")] 
    public double BorderRadiusY 
    { 
     get { return (double)GetValue(BorderRadiusYProperty); } 


     set { SetValue(BorderRadiusYProperty, value); } 
    }