2009-10-28 1 views
0

일반 clr 속성에 바인딩 할 수없는 제한 사항을 극복하려고합니다.WPF 종속성 속성이 인식되지 않습니다.

내가 사용하는 솔루션은 차례로 clr 속성을 변경하는 사용자 지정 종속성 속성을 사용합니다.

여기에 코드

class BindableTextBox : TextBox 
{ 
    public static readonly DependencyProperty BoundSelectionStartProperty = DependencyProperty.Register("BoundSelctionStart", typeof(int), typeof(BindableTextBox), 
                              new PropertyMetadata(new PropertyChangedCallback(BindableTextBox.onBoundSelectionStartChanged))); 

    private static void onBoundSelectionStartChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     ((TextBox)d).SelectionStart = (int)e.NewValue; 
    } 

    private static readonly DependencyProperty BoundSelectionLenghtProperty = DependencyProperty.Register("BoundSelectionLenght", typeof(int), typeof(BindableTextBox), 
                              new PropertyMetadata(new PropertyChangedCallback(BindableTextBox.onBoundSelectionLenghtChanged))); 

    private static void onBoundSelectionLenghtChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     ((TextBox)d).SelectionLength = (int)e.NewValue; 
    } 

    public int BoundSelectionStart 
    { 
     get { return (int)GetValue(BoundSelectionStartProperty); } 
     set { SetValue(BoundSelectionStartProperty, value); } 
    } 

    public int BoundSelectionLenght 
    { 
     get { return (int)GetValue(BoundSelectionLenghtProperty); } 
     set { SetValue(BoundSelectionLenghtProperty, value); } 
    } 
} 

입니다하지만 BoundSelectionStart에 바인딩 뭔가하려고 할 때 그것이 나는 단지 DP에 결합 할 수 있다고 말한다.

<bindable:BindableTextBox Text="{Binding Name}" BoundSelectionStart="{Binding ElementName=slider1, Path=Value}" /> 

무엇이 문제인가?

답변

2

당신은 줄에 오타가 있습니다

public static readonly DependencyProperty BoundSelectionStartProperty = DependencyProperty.Register(...) 

첫 번째 매개 변수는 "BoundSelectionStart"(선택의 배 전자),하지 "BoundSelctionStart"이어야합니다.

+0

"길이"를 여러 곳에서 "길이"로 잘못 입력했습니다. – user200783

+0

고마워, 나 자신에게 안경 한 켤레를 사야한다 :) – kamilw