2015-10-13 2 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; 

Это на самом деле не привязки, это только ressource искать. Если вам нужна привязка данных, это сложнее, но для двойника, который является неизменным, я не уверен, что полезно делать привязку данных.

Ресурсы являются собственностью приложения или 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); } 
    } 
Смежные вопросы