WPF扩展器扩展到应用程序的最右侧

时间:2014-12-17 06:40:24

标签: c# wpf sidebar expander

我想改变我的程序,以便在点击图像时显示应用程序最右侧的侧边栏。

我目前一直在尝试使用Expander来实现这一目标。这是迄今为止的样子:

enter image description here

<Expander>
         <Expander.Header>
               <Image Width="200" Height="300" Source="{Binding image}"/>
         </Expander.Header>

         <i:Interaction.Behaviors>
            <local:UniqueNameBehavior ID="{Binding id}"/>
         </i:Interaction.Behaviors>

         <StackPanel Margin="10,4,0,0">
               <ToggleButton Margin="4" Content="Option 1" Template="{StaticResource SimpleExpanderButtonTemp}"/>
                <ListView>
                     <TextBox Text="Search" />
                 </ListView>
         </StackPanel>
</Expander>

这个想法是,无论何时点击任何电影,都会显示应用程序最右侧的侧边栏,其中包含有关电影的信息。如果随后点击了另一部电影,侧边栏现在将包含有关新电影的信息。

我知道可以更改ExpandDirection,但这只会导致内容出现在图片旁边而不是应用程序的最右边。

我也尝试调整Margin的{​​{1}},但这会导致周围的电影被推到一边。

有人可以帮助我解决这个问题吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我不相信使用扩展器可以实现这种行为。 为什么不在应用程序的最右侧创建一个网格,其宽度设置为0,当您单击/选择一个电影时,它将网格宽度设置为新值并根据电影更改其内容?

<Grid HorizontalAlignment="Right">
<Grid.Style>
    <Style TargetType="Grid">
        <Setter Property="Width" Value="0"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding ShowMovieForm}" Value="True">
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Width" To="400" />
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
                <DataTrigger.ExitActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Width" To="0" />
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.ExitActions>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Grid.Style>
</Grid>