2012-07-12 66 views
0

我有一個xceed網格(不確定這是否重要),其中一列有一個具有TextBlock的CellContentTemplate。而不是將文本塊寬度自動設置爲文本的大小,我希望它是列的大小。我允許調整大小,所以這使事情變得複雜一點。有沒有一種方法來動態改變TextBlock的寬度,當列被調整大小,在代碼後面?當包含它的列被調整大小時,動態設置Textblock的大小

編輯:CellContentTemplate

<DataTemplate x:Key="CellTemplate.TaskName"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Tag="{Binding Path=DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"> 
        <TextBlock Text="{Binding Path=Name}" > 
         <ui:DragDropBinding.DragSource> 
          <Binding Mode="TwoWay" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type XceedProviders:DataGridControlWithSelectedItems}}" Path="BindableSelectedItems" PresentationTraceSources.TraceLevel="High"/> 
         </ui:DragDropBinding.DragSource> 
        </TextBlock> 
       </TextBlock> 
     </StackPanel> 
    </DataTemplate> 
+0

您可以粘貼CellContentTemplate代碼嗎? – kmatyaszek 2012-07-12 16:50:07

+0

添加CellContentTemplate – 2012-07-12 16:53:45

+0

嘗試將StackPanel更改爲網格。 – kmatyaszek 2012-07-12 17:32:43

回答

1

你好,這是因爲你的StackPanel封閉的TextBlock。一個簡單的解決方法是,而不是兩個TextBlock中使用兩種運行到綁定兩個屬性,如

<DataGridTemplateColumn Header="Name" Width="*" > 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
          <TextBlock Background="Green"> 
           <Run Text="{Binding Name}"/> 
           <Run Text="{Binding Rollno}"/> 
          </TextBlock> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

現在文本塊將與列。我的寬度擴大希望這將有助於。

+0

究竟是什麼導致它隨着列寬度擴大? – 2012-07-12 18:04:48

+0

默認情況下,當你在DataGridTemplateColumn中包含TextBlock /(任何其他內容控件)時,它會覆蓋整個寬度,但是如果你將它放在堆棧面板中,那麼它將只有寬度,其文本需要多少 – ethicallogics 2012-07-12 18:13:09

+0

我正在使用Xceed,所以我不會正在使用DataGridTemplateColumn。我會嘗試這個。也許xceed以同樣的方式工作。 – 2012-07-12 19:01:48

相關問題