我正在开发的应用程序中有一个TextBox,并且绑定是在xaml
中完成的我希望能够在TextBox Text Property的绑定完成时引发一个事件,这意味着当通过绑定到TextBox来加载/更改文本时我该如何实现?
我尝试了TextChanged Event也加载了事件,但是在Binding被收集后没有运气,所以我该怎么做?
<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}" />
我想要一个事件,当Binding完成时,我想为父堆栈面板下的列表框提供不同的数据源,所以我需要绑定事件,所以当我有catedory id int时,他将在文本块中使用隐藏在xaml中(由于测试原因,现在没有崩溃)
答案 0 :(得分:2)
这是一个有点奇怪的事情,如果你告诉我们你为什么要这样做可能会有所帮助?
然而,由于没有其他信息,我会提出解决方案。
如果TextBox API事件未提供您需要的信息,请尝试处理LayoutUpdated
事件。每次布局发生时都会触发此事件,这通常是添加到可视树中的元素ae。当此事件触发时,检查您的TextBox.Text
属性以查看它是否已设置。
答案 1 :(得分:1)
这解决了我的问题:)
<TextBlock FontSize="16" FontWeight="Bold" Foreground="White" Margin="4,0,4,0" Text="{Binding CategoryName}" Loaded="TextBlock_Loaded" />
内部文本块中的加载事件而不是上部文本块,因为在加载时,上部文本块的文本已经绑定,因此我可以检索ID:)