使用DataTrigger更改左边距或右边距(或两者)

Joe*_*tti 7 wpf xaml

所以我有一个网格需要根据VM中的标志来改变它的边距.看起来像datatriggers是处理这个问题的正确方法.

所以我设置了这个:

<Grid x:Name="myGrid" Grid.Row="1" Margin="30,0">
    <Grid.Style>
        <Style TargetType="Grid">
            <Style.Triggers>
                <DataTrigger Binding="{Binding UI_Preferences.RightPanelPinned}" Value="true" >
                    <Setter Property="Margin" value="200" />
                </DataTrigger>
                <DataTrigger Binding="{Binding UI_Preferences.LeftPanelPinned}" Value="true" >
                    <Setter Property="Margin" value="200" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Style>
</Grid>
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我无法弄清楚如何单独修改左边距或右边距.

Dea*_*alk 10

边距实际上是一个Thickness元素,所以你可以这样做:

编辑 - 添加了设置机器人的条件:

<Grid x:Name="myGrid" Grid.Row="1" Margin="30,0">
<Grid.Style>
  <Style TargetType="Grid">
    <Style.Triggers>
      <DataTrigger Binding="{Binding UI_Preferences.RightPanelPinned}" Value="true" >
        <Setter Property="Margin">
          <Setter.Value>
            <Thickness Left="200"/>
          </Setter.Value>
        </Setter>
      </DataTrigger>
      <DataTrigger Binding="{Binding UI_Preferences.LeftPanelPinned}" Value="true" >
        <Setter Property="Margin">
          <Setter.Value>
            <Thickness Right="200"/>
          </Setter.Value>
        </Setter>
      </DataTrigger>
      <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding UI_Preferences.LeftPanelPinned}" Value="true" />
          <Condition Binding="{Binding UI_Preferences.RightPanelPinned}" Value="true" />
        </MultiDataTrigger.Conditions>
        <Setter Property="Margin">
          <Setter.Value>
            <Thickness Right="200" Left="200"/>
          </Setter.Value>
        </Setter>
      </MultiDataTrigger>
    </Style.Triggers>
  </Style>
</Grid.Style>
Run Code Online (Sandbox Code Playgroud)