2010-03-13 26 views
15

içinde bağla 'RichTextBox öğesinin Yüksekliği özelliğini GridView'ın Satırının Yükseklik Özelliği'ne bağlamak istiyorum. Bunu nasıl yapabilirim? Satır Yüksekliğini nasıl yapacağımı bilmiyorum, çünkü xaml'da ne yapmak isterdim?Bir üst öğenin bir özelliğine wpf

Ancestor tipi GridViewHeaderRow olmalı, ama ben onun seviyesini bilmiyorum ...

DÜZENLEME:

<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> 

...

cevap

20

ben bilmem senin RadGridView burada. Ama deneyeceğim ilk şey, bir GridViewHeaderRow bulunana ve Yükseklik özelliğine bağlanıncaya kadar görsel ağaca gitmek için FindAncestor ile RelativeSource Bağlama kullanıyor.

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

RadGridView öğesini bulmak için ağaca doğru yürümeniz ve daha sonra üstbilgi satırına geri dönmeniz gerekebilir.

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

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

veya

RadGridView uygulanmasına bağlıdır. Ben bu hataları olsun neden :

+0

G/EDIT güncellenen kod ile init Soru değişti < "{ElementName DataGrid1'de, Yol = RowHeight Bağlama}" = RichTextBox Yükseklik> Ben RadGridView sahip olduğunu, unuttum ElementName yoluyla bağlayabildiğim RowHeight özelliği ... – msfanboy

+0

neden bu hatayı alıyorum? System.Windows.Data Hatası: 4: 'ElementName = dataGrid1' referansıyla ciltleme kaynağı bulunamadı. BindingExpression: Yol = RowHeight; Dataıtem = null; hedef eleman 'RichTextBox' (Name = ''); hedef özelliği 'Yükseklik' (tip 'Çift') – msfanboy

+0

tamam teleriks nefret datagrid nefret etmek için bir sebep daha. herkese açık Double RowHeight {get; hiçbir bağımlılık özelliği ...: S – msfanboy