質問

I have an xceed grid (not sure if that is important) and one of the columns has a CellContentTemplate that has a TextBlock. Instead of the textblock width being automatically set to the size of the text, I want it to be the size of the column. I allow resizing, so this complicates things a bit. Is there a way to dynamically change the TextBlock width when the column gets resized, in code behind?

EDIT: 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>
役に立ちましたか?

解決

Hi this is because you enclosing TextBlock in StackPanel . One simple workaround is instead of two TextBlock use two Run to bind two properties like

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

Now textblock will expand with the width of column .I hope this will help.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top