对于DataGridTemplateColumn,是否有TextBlock ScrollViewer.CanContentScroll =“True”的代码隐藏等价物?

时间:2013-05-09 15:10:52

标签: c# wpf scrollviewer textblock datagridtemplatecolumn

对于XAML中的TextBlock,您可以在DataTemplate中执行以下操作:

<TextBlock Text="myTextBlock Text" VerticalAlignment="Center" Margin="0,0,5,0" 
ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible"/>

但是当我尝试设置ScrollViewer.Horizo​​nalScrollBarVisibility时,它似乎什么也没做。

DataTemplate textBlockTemplate = new DataTemplate();
FrameworkElementFactory textBlockElement = new FrameworkElementFactory(typeof(TextBlock));
Binding c1Binding = new Binding("myBindingValue") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged };
textBlockElement.SetBinding(TextBlock.TextProperty, c1Binding);
textBlockElement.SetValue(TextBlock.TextWrappingProperty, TextWrapping.Wrap);
textBlockElement.SetValue(TextBlock.HeightProperty, System.Convert.ToDouble(23));

textBlockElement.SetValue(ScrollViewer.CanContentScrollProperty, true);
textBlockElement.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Visible);
textBlockTemplate.VisualTree = textBlockElement;
templateColumn.CellTemplate = textBlockTemplate;
myDataGrid.Columns.Add(templateColumn);

我正在尝试创建一个DataGrid列,其中TextBlock显示一行文本,但允许您向上/向下滚动以查看文本块的其余部分。

1 个答案:

答案 0 :(得分:0)

TextBlock中没有包含ScrollViewer来设置滚动行为。你需要将它包装在ScrollViewer中,你可以在其上设置你想要的任何东西。将其与ListBox进行对比,ScrollViewer在其ControlTemplate中包含{{1}},因此可以利用附加的属性。