<ListView>
               <ListView.View>
                   <GridView>
                       <GridViewColumn>
                           <GridViewColumn.CellTemplate>
                               <DataTemplate>
                                    <Grid>
                                        <RichTextBox>
                                            <FlowDocument>
                                                 <Paragraph>
                                                      <DockPanel>
                                                          <RichTextBox x:Name="RtBox">
                                                               <FlowDocument>
                                                                    <Paragraph>
                                                                        <Image Source=""/> 
                                                                        <Run Text="{Binding Text}"/>
                                                                    <Paragraph>
                                                                </FlowDocument>
                                                          </RichTextBox>
                                                      </DockPanel>
                                                 </Paragraph>
                                             </FlowDocument>
                                        </RichTextBox>
                                    </Grid>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                   <GridView>
               <ListView.View>
          <ListView>
                  该如何获取到叫RtBox的RichTextBox  ,我想用后台的代码控制是否启用这一控件。WPFlistviewGridView

解决方案 »

  1.   

    根据wpf的思想 你需要使用绑定来控制 而不是代码控制
      

  2.   

    Visibility属性绑定到一个变量,控制那个变量就行了,一个效果。
      

  3.   

    在Override OnApplyTemplate方法里可以调用GetTemplateChild()方法来获取DataTemplate的元素
    public override void OnApplyTemplate()
    {
                base.OnApplyTemplate();_richBox = this.GetTemplateChild("RtBox") as RichBox;
    }_richBox是你自定义的变量 就可以控制这个richBox了
      

  4.   


    代码修改了一下 RichText richBox = this.GetTemplateChild("RtBox") as RichTextBox;
    获取不到,报错未将对象引用到设置对象的实例。因为我两个RichTextBox嵌套的问题?
    并且这样定义只是局部变量。该怎么修改代码?
      

  5.   

    http://msdn.microsoft.com/zh-cn/library/bb613579.aspx这里还有一些方法可以做这件事。你应该要先绑定好ItemSource再搜索richitextbox里元素 没有items的话cell template估计get不到
      

  6.   

    还有一种方法~
    在richitextbox 的loaded事件里来获得这个元素                                                    <RichTextBox Loaded="RtBox_Loaded_1"
                                                            x:Name="RtBox">        private void RtBox_Loaded_1(object sender, RoutedEventArgs e)
            {
                var richTextBox= (RichTextBox)sender;
            }sender就是你想要拿到的richtextbox
      

  7.   

    前提是你绑定的itemsource有东西~不然listview不会做出来这个element的~
      

  8.   


    代码修改了一下 RichText richBox = this.GetTemplateChild("RtBox") as RichTextBox;
    获取不到,报错未将对象引用到设置对象的实例。因为我两个RichTextBox嵌套的问题?
    并且这样定义只是局部变量。该怎么修改代码?
    下面引用来自MSDN的一段话:若要在初始的加载和处理之后向元素树添加任何元素,都必须对定义名称范围的类调用相应的 RegisterName 的实现。否则,无法通过 FindName 等方法按名称引用添加的对象。仅设置 Name 属性(或x:Name 属性)不会将该名称注册到任何名称范围中。将命名的元素添加到具有名称范围的元素树中也不会将此名称注册到名称范围中。尽管名称范围可以嵌套,但通常您应该将名称注册到根元素上存在的名称范围中,这样您的名称范围位置便可与在等效的加载 XAML 页中可能已创建的名称范围并列。 应用程序开发人员最常用的方案是使用 RegisterName 将名称注册到当前根元素的名称范围中。RegisterName 是查找将作为动画运行的演示图板的一种重要方案的一部分。