2010-03-13 20 views
15

'Deseo enlazar la propiedad Height de RichTextBox con la propiedad Height de la fila de GridView. ¿Cómo puedo hacer eso? No sé cómo obtener la Altura de la Fila, ya que no puedo acceder a la Fila en xaml, lo que me gustaría hacer.Enlace a una propiedad de un elemento principal en wpf

El tipo debe ser antepasado GridViewHeaderRow, pero no sé su nivel ...

EDIT:

<my:RadGridView Height="524" RowHeight="300" ItemsSource="{Binding Lessons}" AutoGenerateColumns="False" Name="dataGrid1" VerticalAlignment="Top" SelectionMode="Single" CanUserSortColumns="False" IsFilteringAllowed="False"> 

      <my:RadGridView.Columns> 
       <my:GridViewDataColumn DataMemberBinding="{Binding SchoolclassName}" Header="Schoolclass" Width="0.1*" /> 
       <my:GridViewDataColumn DataMemberBinding="{Binding SubjectName}"  Header="Subject"  Width="0.1*" /> 

       <my:GridViewDataColumn Width="0.3*" Header="Homework"> 
        <my:GridViewDataColumn.CellTemplate> 
         <DataTemplate> 
          <RichTextBox Height="{Binding ElementName=dataGrid1,Path=RowHeight}" > 
           <FlowDocument> 
            <Paragraph> 
             <Run Text="{Binding Homework}"/> 
            </Paragraph> 
           </FlowDocument> 
          </RichTextBox>         
         </DataTemplate> 
        </my:GridViewDataColumn.CellTemplate> 


<my:RadGridView Height="524" ItemsSource="{Binding Lessons}" AutoGenerateColumns="False" Name="dataGrid1" VerticalAlignment="Top" SelectionMode="Single" CanUserSortColumns="False" IsFilteringAllowed="False"> 
      <my:RadGridView.Columns> 

       <my:GridViewDataColumn Name="ContentColumn" Width="0.3*" Header="Content"> 
        <my:GridViewDataColumn.CellTemplate> 
         <DataTemplate> 
          <RichTextBox Height="{Binding ElementName=MyRowNameToBindTo,Path=Height}"> 
           <FlowDocument> 
            <Paragraph> 
             <Run Text="{Binding Content}"/> 
            </Paragraph> 
           </FlowDocument> 
          </RichTextBox> 
         </DataTemplate> 
        </my:GridViewDataColumn.CellTemplate> 

...

Respuesta

20

No sé acerca de su RadGridView aquí. Pero lo primero que probaría es usar un enlace RelativeSource con FindAncestor para recorrer el árbol visual hasta que se encuentre un GridViewHeaderRow y vincularlo a su propiedad Height.

 
... Height="{Binding Height, 
       RelativeSource={RelativeSource Mode=FindAncestor, 
           AncestorType={x:Type GridViewHeaderRow }}}" ... 

Es posible que tenga que caminar por el árbol para encontrar el RadGridView y luego caminar hacia abajo hasta la fila del encabezado.

 
... Height="{Binding HeaderRow.Height, 
       RelativeSource={RelativeSource Mode=FindAncestor, 
           AncestorType={x:Type RadGridView }}}" ... 

o

 
... Height="{Binding Rows[0].Height, 
       RelativeSource={RelativeSource Mode=FindAncestor, 
           AncestorType={x:Type RadGridView }}}" ... 

depende de la implementación de RadGridView.

+0

me han cambiado/editar la pregunta de inicio con el código de actualización: ¿por qué recibo errores sobre esto: me olvidaba, que RadGridView tiene una propiedad RowHeight a la que puedo enlazar a través de ElementName ... – msfanboy

+0

¿por qué recibo este error? System.Windows.Data Error: 4: No se puede encontrar el origen para el enlace con la referencia 'ElementName = dataGrid1'. BindingExpression: Path = RowHeight; DataItem = null; el elemento de destino es 'RichTextBox' (Name = ''); la propiedad de destino es 'Altura' (escriba 'Doble') – msfanboy

+0

bien, una razón más para odiar a los teleriks también. public double RowHeight {get; establecer;} no es propiedad de la dependencia ...: S – msfanboy

Cuestiones relacionadas