2010-03-13 20 views
15

'Ich möchte die Height-Eigenschaft von RichTextBox an die Height-Eigenschaft der GridView-Zeile binden. Wie kann ich das machen? Ich weiß nicht, wie ich die Höhe der Zeile erreichen kann, da ich in xaml nicht auf die Zeile zugreifen kann, was ich tun möchte.An eine Eigenschaft eines übergeordneten Elements in wpf binden

Die Vorfahrtyp GridViewHeaderRow sein sollte, aber ich weiß nicht, das Niveau ...

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> 

...

Antwort

20

Ich weiß nicht, über Ihre RadGridView hier. Aber das erste, was ich versuchen würde, ist die Verwendung einer RelativeSource Bindung mit FindAncestor, um den visuellen Baum hinaufzulaufen, bis eine GridViewHeaderRow gefunden und an seine Height-Eigenschaft gebunden wird.

Möglicherweise müssen Sie den Baum hinaufgehen, um die RadGridView zu finden, und dann zurück zur Kopfzeile gehen.

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

oder

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

Abhängig von der Implementierung von RadGridView.

+0

Ich habe mit aktualisierten Code geändert/EDIT die init Frage: warum ich Fehler auf diese: habe ich vergessen, dass RadGridView hat eine RowHeight-Eigenschaft, an die ich über ElementName binden kann ... – msfanboy

+0

Warum bekomme ich diesen Fehler? System.Windows.Data Fehler: 4: Die Quelle für die Bindung mit Verweis 'ElementName = dataGrid1' kann nicht gefunden werden. BindingExpression: Pfad = RowHeight; Datenelement = null; Zielelement ist 'RichTextBox' (Name = ''); target property ist 'Height' (Typ 'Double') – msfanboy

+0

ok ein Grund mehr, Teleriks zu hassen, crappy datagrid too. öffentliche doppelte RowHeight {bekommen; set;} seine keine Abhängigkeitseigenschaft ...: S – msfanboy

Verwandte Themen