TextBlock
이 포함 된 WPF 컨트롤을 개발하려고합니다. 이 컨트롤은 ItemsControl
에 대해 DataTemplate
에 표시됩니다. 이 컨트롤에서는 기본적으로 컨트롤의 높이를 고정 높이로 설정합니다 (기준선을 설정하려면 150이라고합시다). TextBlock
은 사용 가능한 픽셀 수에 따라 내용을 트리밍합니다. 또한 "확장"버튼을 사용하여 텍스트 상자를 원하는 높이로 확장하여 트리밍없이 모든 텍스트를 표시 할 수 있도록하려고합니다.확장 가능한 TextBlock이있는 WPF 컨트롤 디자인
here 코드를 기반으로 TextBlock 높이가 제한되지 않는 한 트리밍 감지 기능이 작동합니다. 사용자 지정 컨트롤 경로를 따라 가서 Arrange
및 Measure
을 무시해야하지만 XAML로 해결할 수 있기를 바랍니다.
내 ViewModel은 ToggleTextExpansionCommand
명령이 실행될 때 토글 할 IsExpanded
속성을 갖습니다. 그러나 TextBlock
이 필요한 모든 공간을 차지하도록 확장하려면 내 IsExpanded
트리거에서 무엇을해야하는지 잘 모르겠습니다.
DataTemplate
지금 보이는 :
<DataTemplate>
<Grid Height="140">
<Grid.RowDefinitions>
<!-- other rows exist -->
<RowDefinition Height=*" /> <!-- textblock row -->
</Grid>
<!-- other content -->
<TextBlock x:Name="MyTextBlock" Grid.Row="2" Text="{Binding MyText}" />
<Button x:Name="ExpanderButton" Command="{Binding ToggleTextExpansionCommand}" Visibility="Collapsed" />
</Grid>
<DataTemplate.Triggers>
<Trigger SourceName="MyTextBlock" Property="Controls:TextBlockServices.IsTextTrimmed" Value="True">
<Setter TargetName="ExpanderButton" Property="Visibility" Value="Visible" />
</Trigger>
<DataTrigger Binding="{Binding IsExpanded}" Value="True">
<!-- what do I do here?? -->
</DataTrigger>
</DataTemplate.Triggers />
</DataTemplate>
트리거에서 TextBlock Height를 Auto로 설정할 수만 있습니까? –
@ sa_ddam213 내가 그렇게하면 그리드 높이를 어떻게 설정합니까? 자동? 눈금 높이를 값으로 설정하면 TextBlock은 커지지 만 텍스트가 잘릴 것입니다. 또한 Grid 높이가 Auto 인 경우 RowHeight를 지정하는 것이 무엇을 의미하는지 알지 못합니다. – sohum
버튼과 TextBlock을 자체 컨테이너에 랩핑하고 그 컨테이너의 ActualHieght에 Grids 높이를 바인딩합니다. 하드 코드 된 값을 사용하면 훨씬 더 힘들어집니다. –