2

我正在开发的应用程序中有一个 TextBox,并且绑定是在 xaml 中完成的

我希望能够在 TextBox 文本属性的绑定完成时引发一个事件,这意味着当文本通过绑定到 TextBox 被加载/更改时,我如何实现这一点?

我尝试了 TextChanged 事件也加载了事件,但在绑定完成后没有运气,我该怎么做?

<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}" />

我想要一个事件,当绑定完成时,我想为父堆栈面板下的列表框提供不同的数据源,所以我需要绑定事件,所以当我在文本块中有分类 ID 时,稍后将隐藏在xaml(由于测试原因现在没有折叠)

4

2 回答 2

2

这是一件有点奇怪的事情,如果您告诉我们您为什么要这样做可能会有所帮助?

但是,由于手头没有其他信息,我将提出一个解决方案。

如果 TextBox API 事件未提供您需要的信息,请尝试处理该LayoutUpdated事件。每次布局发生时都会触发此事件,这通常是作为元素添加到可视化树中。当此事件触发时,检查您的TextBox.Text属性以查看它是否已设置。

于 2011-06-06T05:30:44.547 回答
1

这为我解决了问题:)

<TextBlock FontSize="16" FontWeight="Bold" Foreground="White" Margin="4,0,4,0" Text="{Binding CategoryName}" Loaded="TextBlock_Loaded" />

在内部文本块而不是上部文本块中加载事件,因为在加载时上部文本块的文本已经绑定,所以我可以检索 ID :)

于 2011-06-06T06:45:26.777 回答