如何在WPF中的样式数据触发器中设置Grid.column值

时间:2017-09-25 14:31:43

标签: c# wpf xaml

我有一个行= o和列= 1的网格 单击按钮,我想更改此grid.row = 0和grid.column = 0。 我试过通过创建一个带有数据触发器的样式来设置grod.column = 0.这样做。这是gris的本地值,这在样式属性中不可用.Grid.column的值没有改变。你能帮我解决一下如何更改xaml中的grid.column值以满足我的要求。

1 个答案:

答案 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中的注释部分)。