2012-07-12 67 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

相关问题