我有一个类'MyTextBox',它派生自Silverlight中的默认TextBox。此类目前不包含其他代码。
我在xaml中设置了一个绑定,将MyTextbox的Text-Property绑定到另一个Textbox,以反映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>
当我从控件派生时,是否有特殊的东西可以设置为绑定。
PS:我尝试使用INotifyPropertyChanged绑定到虚拟对象,并将其设置为现有Textboxes的DataContext。此测试按预期工作,我的派生文本框得到更新。
答案 0 :(得分:1)
Jehof,
首先,在派生的my:NumberTextBox的Text属性上使用TwoWay绑定。
如果仍无法解决问题,请继续...
my:NumberTextBox类实际上是从TextBox派生的吗?如果是这样,你不应该做任何其他事情。如果要构建自己的控件,并在my:NumberTextBox类中实现Text属性,请尝试将其设置为DependencyProperty以允许TwoWay绑定。举个例子:
// 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
祝你好运,
吉姆麦克库迪
面对面软件和YinYangMoney
答案 1 :(得分:0)
最后,我找到了原因,为什么它不起作用。
我犯了错误,我在我的项目中添加了一个新的Silverlight用户控件(MyTextBox),并将基类从UserControl更改为TextBox(使用相应的Xaml-File)。在这种情况下,绑定不起作用。
在我将一个普通的类添加到我的项目并从TextBox派生后,绑定工作没有任何问题。