2010-03-17 5 views
3

Silverlight의 기본 TextBox에서 파생되는 'MyTextBox'클래스가 있습니다. 이 클래스에는 현재 추가 코드가 없습니다.파생 된 텍스트 상자의 "텍스트 속성"을 다른 텍스트 상자에 바인딩 할 수 없습니다.

xaml에서 텍스트 상자에 입력 한 내용을 반영하기 위해 MyTextbox의 Text-Property를 다른 Textbox에 바인딩하도록 바인딩을 설정했습니다. 그 효과는 MyTextBox가 업데이트되지 않고 다른 텍스트 상자의 텍스트를 표시하지 않는다는 것입니다.

추가 일반 텍스트 상자에 대해 동일한 바인딩을 만들었습니다. 그리고 이것은 작동합니다.

여기에 바인딩에 대한 XAML이 있습니다.

<UserControl x:Class="Silverlight.Sample.Dummy" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:my="clr-namespace:Sample" 
mc:Ignorable="d" 
d:DesignHeight="300" d:DesignWidth="400"> 

<StackPanel x:Name="LayoutRoot" Background="White"> 
    <TextBox Height="23" x:Name="textBox2" Width="120" /> 
    <TextBox Text="{Binding ElementName=textBox2, Path=Text, Mode=TwoWay}" Width="120" /> 
    <my:NumberTextBox Width="120" Text="{Binding ElementName=textBox2, Path=Text, Mode=OneWay}" /> 
</StackPanel> 

내가 컨트롤에서 파생 할 때, 바인딩 설정하는 특별한 뭔가가 있나요.

추신 : 나는 INotifyPropertyChanged를 사용하여 더미 개체에 바인딩을 시도하고 기존 Textbox에 대한 DataContext로 설정했습니다. 이 테스트는 예상대로 작동하고 파생 된 텍스트 상자가 업데이트됩니다. NumberTextBox :

답변

0

에 직면

// The Text dependency property 
    #region The Text dependency property 
    public static readonly DependencyProperty TextProperty = 
     DependencyProperty.Register("Text", typeof(string), typeof(NumberTextBox), 
     null); 

    public string Text 
    { 
     get { return (string)GetValue(TextProperty); } 
     set { SetValue(TextProperty, value); } 
    } 
    #endregion 

행운을 빌어 요, 짐 맥 커디 얼굴, 나는이 작품을 나던 이유를 발견했다.

실수로 새 Silverlight 사용자 정의 컨트롤 (MyTextBox)을 프로젝트에 추가하고 기본 클래스를 UserControl에서 TextBox로 변경했습니다 (해당 Xaml-File 사용). 이 경우 바인딩이 작동하지 않습니다.

내 프로젝트에 일반 클래스를 추가하고 TextBox에서이 클래스를 파생하면 바인딩이 문제없이 작동합니다.

1

Jehof, 모든

첫째, 파생 내의 Text 속성에 바인딩 양방향을 사용합니다. 텍스트 상자에서 실제로 NumberTextBox 클래스 파생 : 그 문제가 해결되지 않으면, 계속

...

는 내합니까? 그렇다면해야 할 일이 없어야합니다. 자신의 컨트롤을 작성하고 my : NumberTextBox 클래스의 Text 속성을 적용하려면 DependencyProperty로 설정하여 TwoWay 바인딩을 허용하십시오. 예를 들어 : 소프트웨어 및 YinYangMoney 마지막으로

+0

동일한 효과로 TwoWay 바인딩을 시도했습니다. NumberTextBox는 TextBox에서 파생됩니다. 현재 NumberTextBox에는 추가 코드가 없습니다. 내가 생각하기에 그것을 제거했습니다, 그것은 정의 된 바인딩을 깨뜨릴 것입니다. – Jehof

관련 문제