我想在我的Silverlight頁面(textboxes,datepickers ...)中的幾個控件中添加一些值,但似乎其中一些從未初始化(直到用戶手動設置任何值)。Silverlight未初始化控件
我已經嘗試了它被頁面的代碼後面的「Loaded」事件,但它不工作...(我認爲這是因爲它被初始化的順序)。
我讀過,這是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" />
這是我孔德背後:
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」,這些文本框爲空(但他們在頁面中完美工作......)。顯然,它們在用戶輸入一些文本時被初始化...
請發送一些驗證碼 – swinefeaster
這沒什麼意義。在哪裏設置'DataContext'?你爲什麼要以你的方式強制一個'UpdateSource'?在這一點上,框中的數據都不會改變,請刪除該代碼。 – AnthonyWJones
DataContext在父頁面中設置(這是一個事實上的控件)並且它完美地繼承。我讓UpdateSource在讓用戶編輯表單之前強制進行「驗證」(我試過它通過帶有介體的消息並且控件也爲null)... – zapico