绑定完成后如何引发事件?

时间:2011-06-06 01:20:04

标签: silverlight events xaml binding raise

我正在开发的应用程序中有一个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中(由于测试原因,现在没有崩溃)

2 个答案:

答案 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:)