Silverlight:动画数据模板属性/绑定到代码隐藏?

时间:2010-11-12 20:34:19

标签: silverlight windows-phone-7

我正在构建一个Windows Phone 7应用程序。对于它,我正在制作一个ListBox,它有两种模式:编辑和不编辑。当它处于编辑模式时,项目旁边会显示+-图标。当它处于正常模式时,图标将被隐藏。

我正在试图弄清楚如何做到这一点。这是控件:

 <Grid x:Name="LayoutRoot">
        <ListBox x:Name="ContentListBox">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>

                        <Image Source="{Binding Path=IconSource}"
                               Grid.Column="0"
                               Width="96"
                               Height="96"
                               VerticalAlignment="Center" />

                        <TextBlock Text="{Binding Path=Name}" Grid.Column="1" />

                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

理想情况下,我想设置第一列图标的动画,以便从Width="0"滑动到Width="Auto"。我查看了Visual States,但不确定如何使用它们。

出于测试目的,我现在尝试将第一列的可见性绑定到某个属性,指示我们是否处于编辑模式。

我可以从代码隐藏中设置第一列的Width,但我不知道该怎么做。

我尝试在Visibility上设置ColumnDefinition,但它抱怨没有这样的元素存在。

我可以在每个Visibility上设置Image。理想情况下,我想将它绑定到代码隐藏中的属性,而不是列表框中每个项目的属性。我尝试了这个,但无法让它工作:

代码背后:

public bool Editing { get; set; }

XAML:

                    <Image Source="{Binding Path=IconSource}"
                           Grid.Column="0"
                           Width="96"
                           Height="96"
                           VerticalAlignment="Center"
                           Visibility="{Binding Path=Editing, Converter={StaticResource visibilityConverter}}" />

我还能尝试什么?难道我做错了什么?理想情况下,我只想使用Visual States。

1 个答案:

答案 0 :(得分:0)

使用visibilityConverter绑定visibility属性,您在正确的轨道上。在没有看到其余代码的情况下很难说,但看起来你正试图将图像的可见性绑定到页面上的编辑属性(在后面的代码中)。但是,项目模板中的数据上下文不是页面,而是列表项本身(即,您将ItemSource绑定到的是什么)。

您的代码实际上是在尝试绑定到列表项上的Editing属性。如果这是你想要的(即控制每个项目的编辑),那么只需确保列表中的每个对象都有一个Editing属性(而不是页面本身的一个Editing属性)。