我有一个包含Scrollviewer的Grid。如果垂直滚动条可见,我想更改网格的边距。
<Grid x:Name="TopGrid" Margin="50,10,100,10" Background="Gainsboro" >
<ScrollViewer x:Name="sv" VerticalScrollBarVisibility="Auto">
<TextBlock x:Name="ItemText" Text="Description" />
</ScrollViewer>
</Grid>
Scrollviewer中的DataTrigger条件应为:
<DataTrigger Binding="{Binding ComputedVerticalScrollBarVisibility,
ElementName=sv}" Value="Visible">
</DataTrigger>
并且网格的样式应更改为:
<Setter TargetName="TopGrid" Property="Margin" Value="100"/>
如何在Scrollviewer上绑定数据并更改父网格的样式?
由于
答案 0 :(得分:2)
如果您想根据某些条件更改Grid.Margin
,可以使用Style
为Grid
创建Trigger
但您需要移动默认Margin
值为Setter
,否则DataTrigger
无法更改该值
<Grid x:Name="TopGrid" Background="Gainsboro">
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Setter Property="Margin" Value="50,10,100,10"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=sv, Path=ComputedVerticalScrollBarVisibility}" Value="Visible">
<Setter Property="Margin" Value="100"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<ScrollViewer x:Name="sv" VerticalScrollBarVisibility="Auto">
<TextBlock x:Name="ItemText" Text="Description" />
</ScrollViewer>
</Grid>