Как вызвать событие, когда привязка завершена?
У меня есть текстовое поле в моем приложении, которое я разрабатываю, и привязка выполняется в xaml
Я хочу иметь возможность вызывать событие, когда привязка TextBox Text Property завершена, то есть когда текст загружается / изменяется посредством привязки в TextBox, как мне этого добиться?
Я пробовал TextChanged Event также Loaded Event, но не сразу после завершения привязки, как мне это сделать?
<ListBox x:Name="listBoxCategories" Background="Transparent" BorderThickness="0" Grid.Row="4" Grid.ColumnSpan="2" Margin="0" Padding="0" ItemContainerStyle="{StaticResource ListBoxItemStyle}" ItemsSource="{Binding ElementName=discussion_categoryDomainDataSource, Path=Data}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="stackPanelCategory" Orientation="Vertical" Margin="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<TextBlock x:Name="TextBlockCategoryId" Text="{Binding Path=CategoryID}" />
<toolkit:Expander IsExpanded="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Style="{StaticResource ForumExpanderStyleRight}">
<toolkit:Expander.Header>
<TextBlock FontSize="16" FontWeight="Bold" Foreground="White" Margin="4,0,4,0" Text="{Binding CategoryName}" LayoutUpdated="TextBlock_LayoutUpdated" />
</toolkit:Expander.Header>
<ListBox x:Name="listBoxBoards" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Transparent" BorderThickness="0" Margin="0" Padding="0" ItemContainerStyle="{StaticResource ListBoxItemStyle}" ItemsSource="{Binding CategoryBoards}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0" HorizontalAlignment="Stretch" x:Name="GridBoard">
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</toolkit:Expander>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
на этой линии
<TextBlock x:Name="TextBlockCategoryId" Text="{Binding Path=CategoryID}" />
Я хочу событие, когда после завершения привязки я хочу предоставить другой источник данных для поля списка под родительской панелью стека, поэтому мне нужно событие привязки, поэтому, когда у меня есть идентификатор catedory в текстовом блоке, который позже будет скрыт в XAML (который теперь не рухнул по причинам тестирования)
2 ответа
Это решило проблему для меня:)
<TextBlock FontSize="16" FontWeight="Bold" Foreground="White" Margin="4,0,4,0" Text="{Binding CategoryName}" Loaded="TextBlock_Loaded" />
Загруженное событие во внутреннем текстовом блоке, а не в верхнем текстовом блоке, потому что к моменту загрузки текст верхнего блока уже связан, поэтому я могу получить идентификатор:)
Это немного странная вещь, которую нужно делать, может быть, если вы скажете нам, почему вы хотите это сделать?
Однако, не имея никакой другой информации, я предложу решение.
Если события API TextBox не предоставляют необходимую информацию, попробуйте передать LayoutUpdated
событие. Это событие срабатывает каждый раз, когда происходит макет, который обычно является элементом, добавляемым в визуальное дерево. Когда это событие проверяет вашу TextBox.Text
свойство, чтобы увидеть, если оно установлено.