我正在構建一個Windows Phone 7應用程序。對此,我製作了一個ListBox
,它有兩種模式:編輯和不編輯。當它處於編輯模式時,+
和-
圖標顯示在項目旁邊。當它處於正常模式時,圖標將被隱藏。Silverlight:動畫化數據模板屬性/綁定到代碼隱藏?
我想弄清楚如何做到這一點。這裏是控制:
<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"
。我看着視覺狀態,但不確定如何使用它們。
出於測試目的,我現在試圖將第一列的可見性綁定到某些屬性,指示我們是否處於編輯模式。
我可以從代碼隱藏的第一列設置Width
,但我不知道該怎麼做。
我試着在ColumnDefinition
上設置Visibility
,但它抱怨沒有這樣的元素存在。
我可以在每個Image
上設置Visibility
。理想情況下,我想將它綁定到代碼隱藏中的屬性,而不是列表框中每個項目的屬性。我想這一點,但無法得到它的工作:
後面的代碼:
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}}" />
我還能嘗試一下呢?難道我做錯了什麼?理想情況下,我想只使用視覺狀態。