XAML:Невозможно обновить переплетены управления в Silverlight просмотра
<TextBlock Text="Country" Foreground="white" TextAlignment="Right" Grid.Row="2" Grid.Column="0" />
<TextBox
x:Name="txtCountries"
Grid.Row="2"
Grid.Column="1"
Grid.ColumnSpan="2"
HorizontalAlignment="Stretch"
Margin="2, 2, 2, 2"
Text="{Binding PhysicalDeliveryParameters.Countries, Converter={StaticResource EnumerableToTextConverter}, ConverterParameter='...'}"
IsReadOnly="True">
</TextBox>
<Button
Grid.Row="2"
Grid.Column="3"
Content="..."
HorizontalAlignment="Left"
Tag="Countries"
Click="ButtonBase_OnClick" />
C# код:
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
PhysicalDeliveryParametersViewModel pvm = GetViewModel();
GenericObservableCollection<SelectableItem> items = pvm.Countries;
PhysicalDeliveryParametersDlg dlg = new PhysicalDeliveryParametersDlg(items);
dlg.Closed += (o, args) =>
{
BindingExpression binding = txtCountries.GetBindingExpression(TextBox.TextProperty);
if(null != binding)
binding.UpdateSource();
};
dlg.ShowDialog();
}
При нажатии на кнопку, метод ButtonBase_OnClick() выполняет: появляется диалоговое окно (PhysicalDeliveryParametersDlg класс), и я выбираю некоторые значения. Связанные данные (PhysicalDeliveryParameters.Countries, который является ObservableCollection) обновляются, но не свойство Text моего TextBox ... Я сделал что-то неправильно?
PS: Я не уверен, что использую лучший способ создания модального окна в Silverlight, не могли бы вы дать мне совет?
Это решение, которое я буду использовать. Но я надеялся, что у меня будет лучший/более чистый :-( – schglurps
@schglurps, что кажется плохим/нечистым об этом? Просто факт, что он обновляет строку стран вручную, вместо того, чтобы использовать привязку? – McGarnagle