2010-03-13 32 views
15

'Tôi muốn gắn thuộc tính Chiều cao của RichTextBox với Thuộc tính Độ cao của Hàng GridView. Làm thế nào tôi có thể làm điều đó? Tôi không biết làm thế nào để có được chiều cao của hàng như tôi không thể truy cập Row trong xaml những gì tôi muốn làm.Liên kết với thuộc tính của phần tử cha trong wpf

Loại cúng tổ tiên nên GridViewHeaderRow, nhưng tôi không biết mức độ ...

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> 

...

Trả lời

20

Tôi không biết về bạn RadGridView ở đây. Nhưng điều đầu tiên tôi muốn thử là sử dụng một ràng buộc RelativeSource với FindAncestor để đi lên cây hình ảnh cho đến khi một GridViewHeaderRow được tìm thấy và liên kết với thuộc tính Height của nó.

Bạn có thể phải đi bộ lên cây để tìm RadGridView và sau đó quay trở lại xuống hàng tiêu đề.

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

hoặc

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

Phụ thuộc vào việc thực hiện các RadGridView.

+0

Tôi đã thay đổi/EDIT câu hỏi init với mã Cập nhật: tại sao tôi nhận được lỗi về điều này: tôi quên, mà RadGridView có một tài sản RowHeight tôi có thể liên kết với thông qua ElementName ... – msfanboy

+0

tại sao tôi nhận được lỗi này? Lỗi System.Windows.Data: 4: Không thể tìm nguồn để liên kết với tham chiếu 'ElementName = dataGrid1'. BindingExpression: Đường dẫn = RowHeight; DataItem = null; phần tử đích là 'RichTextBox' (Tên = ''); mục tiêu tài sản là 'Chiều cao' (loại 'đôi') – msfanboy

+0

ok một lý do nữa để ghét teleriks dữ liệu crappy quá. công khai gấp đôi RowHeight {get; thiết lập;} thuộc tính không phụ thuộc của nó ...: S – msfanboy

Các vấn đề liên quan