我有一个行= o和列= 1的网格 单击按钮,我想更改此grid.row = 0和grid.column = 0。 我试过通过创建一个带有数据触发器的样式来设置grod.column = 0.这样做。这是gris的本地值,这在样式属性中不可用.Grid.column的值没有改变。你能帮我解决一下如何更改xaml中的grid.column值以满足我的要求。
答案 0 :(得分:3)
更改列就像更改附加属性的值一样简单。
下面是ToggleButton
根据IsChecked
值在第一列和第二列之间移动的示例:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<ToggleButton>
<ToggleButton.Style>
<Style>
<!-- <Setter Property="Grid.Column" Value="0" /> optional, see below for explanation -->
<Style.Triggers>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Grid.Column" Value="1" />
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
</Grid>
演示:
使用DataTrigger
无关紧要。
在处理依赖项属性时请注意value precedence,例如在本地设置值将使触发器无效(您将不得不使用另一种方法,例如StoryBoard
来覆盖它):
<ToggleButton Grid.Column="0"> <!-- trigger will not be able to change it -->
...
样式设定器是设置初始值的正确位置(请参阅上面第一个xaml中的注释部分)。