0

私はWindows Phone 7を初めて使用します.1つの疑問があります.動的に作成されたリストボックスで選択した項目にチェックマークを追加する方法です. ユーザーがリストボックス内の別の項目をクリックすると、チェック マークの位置が選択した項目に移動します。どうやってするの?私のコードを以下に示します: XAML コード:

<ListBox Height="669" HorizontalAlignment="Left" Name="listBox1" VerticalAlignment="Top" Width="479" Margin="1,-3.5,0,0" SelectionChanged="listBox1_SelectionChanged" Background="White">
            <ListBox.ItemTemplate>
                <DataTemplate >
                    <Border BorderThickness="0,0,0,1.2" BorderBrush="Black" Width="480" >
                    <StackPanel Background="White" Name="stackpanel1" Width="480" Orientation="Horizontal">
                        <TextBlock Text="{Binding name}"  Height="62" Width="390" FontSize="40" FontFamily="Arial" Foreground="Black" TextAlignment="Left" VerticalAlignment="Center" />
                    </StackPanel>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

CS コード:

 public class list
    {
        public string name { get; set; }

    }

foreach (string s in array)
                {
                    list obj = new list();
                    obj.name = s;
                    listBox1.Items.Add(obj);
                }

いくつかのコードを教えてください。ありがとうございました。

4

2 に答える 2

3

純粋に XAML ベースのソリューションは次のようになります。

アプリケーション固有のコードは次のようになります。

<ListBox ItemsSource="{Binding}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

また、リストボックスのスタイルは XAML 用語になります (以下の「someIcon.png」をコピーして貼り付け、使用するアイコンの名前に変更します)。

<phone:PhoneApplicationPage.Resources>
    <Style TargetType="ListBoxItem">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Top"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Border x:Name="LayoutRoot" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="MouseOver"/>
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="LayoutRoot">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TransparentBrush}"/>
                                        </ObjectAnimationUsingKeyFrames>
                                        <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ContentContainer"/>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="SelectionStates">
                                <VisualState x:Name="Unselected"/>
                                <VisualState x:Name="Selected">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Green"/>
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="SelectionIcon">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <Visibility>Visible</Visibility>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                    <StackPanel Orientation="Horizontal">
                        <Border Width="80" Height="80">
                            <Image Name="SelectionIcon" Source="someIcon.png" Visibility="Collapsed"/>
                        </Border>
                        <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</phone:PhoneApplicationPage.Resources>

更新 1:

以下のビルドアクションに関する私のコメントを説明するために画像を追加します。

ここに画像の説明を入力

于 2012-09-13T08:11:16.983 に答える
0

データ テンプレートのユーザー コントロールを作成します。ユーザーコントロールにチェック画像または蛍光ペンを追加し、ユーザーが対応するアイテムをタップしたときにその可視性を切り替えます。それは私もやったことです。お役に立てば幸いです。

以下のようなもの:

User control

                <Border BorderThickness="0,0,0,1.2" BorderBrush="Black" Width="480" >
                <StackPanel Background="White" Name="stackpanel1" Width="480" Orientation="Horizontal">
                    <Image x:Name="checkImg" Source="check" Visibility="Collapsed">
                    <TextBlock Text="{Binding name}"  Height="62" Width="390" FontSize="40" FontFamily="Arial" Foreground="Black" TextAlignment="Left" VerticalAlignment="Center" />
                </StackPanel>
                </Border>

そしてlistbox今:

        <ListBox Height="669" HorizontalAlignment="Left" Name="listBox1" VerticalAlignment="Top" Width="479" Margin="1,-3.5,0,0" SelectionChanged="listBox1_SelectionChanged" Background="White">
        <ListBox.ItemTemplate>
            <DataTemplate >
                <user:control></user:control>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

selectionchagedイベントで、アイテムを抽出し、ListBoxItemその可視性を切り替えます。

選択したアイテムの古いアイテムを保存し、別のアイテムを選択すると、古いアイテムの可視性を false に、新しいアイテムの可視性を true に設定します。

于 2012-09-13T07:46:07.487 に答える