我正在尝试在silverlight页面的几个控件中添加一些值(文本框、日期选择器...)但它们中的一些似乎从未初始化过(直到用户手动设置了任何值)。
我试过了,因为页面代码中的“已加载”事件被挂起了,但它不起作用……(我认为这是因为它被初始化的顺序)。
我读到过这是silverlight的限制之一,但也许有解决办法……
有什么想法吗?提前谢谢。
一些代码来说明它,首先是xaml控件:
<sdk:Label Target="{Binding ElementName=txtNumeroColegiado}" Content="Nº Colegiado" HorizontalAlignment="Right" Margin="5,0" Name="label2" VerticalAlignment="Center" />
<TextBox Margin="5,0" Name="txtNumeroColegiado" TabIndex="27" Text="{Binding Medico.colegiado, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" VerticalAlignment="Center" Grid.Column="1" />
<sdk:Label Target="{Binding ElementName=txtNombreComercial}" Content="Nombre Comercial" HorizontalAlignment="Left" Margin="5,0" Name="label4" VerticalAlignment="Center" Grid.Column="2" />
<TextBox Margin="5,0" Name="txtNombreComercial" TabIndex="27" Text="{Binding Medico.nombrecomercial, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" VerticalAlignment="Center" Grid.Column="3" />这是我后面的conde:
public DatosMedico()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(DatosMedico_Loaded);
}
void DatosMedico_Loaded(object sender, RoutedEventArgs e)
{
this.txtNombreComercial.GetBindingExpression(TextBox.TextProperty).UpdateSource();
this.txtNumeroColegiado.GetBindingExpression(TextBox.TextProperty).UpdateSource();
}当它尝试运行"updateSource“时,这些文本框为空(但它们在页面中工作正常...)。显然,它们是在用户输入一些文本时初始化的。
发布于 2011-09-28 16:24:59
解决方法是删除一个内部有许多控件的"ContentPresenter“。
发布于 2011-09-28 03:06:45
在guess中,DataContext要么没有设置,要么没有设置为您期望设置的对象。在调试时检查VS中的输出窗口,您是否看到任何有关绑定的投诉?
https://stackoverflow.com/questions/7572399
复制相似问题