0

アプリケーションにエキスパンダービューがあり、ユーザーがエキスパンダービューからアイテムを選択したときにイベントを発生させようとしていますが、これを機能させることはできません。

私のxamlは次のようになります:

<!--Custom header template-->
<DataTemplate x:Key="CustomHeaderTemplate">
    <TextBlock Text="" FontSize="28" />            
</DataTemplate>

<!--Custom expander template-->
<DataTemplate x:Key="CustomExpanderTemplate">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Rectangle Width="400" Height="60" Fill="#FFF1F1F1" HorizontalAlignment="Stretch" StrokeThickness="0" Grid.Row="0" Grid.Column="0" />
        <TextBlock Text="{Binding procedureName}" FontSize="30" Foreground="#FF00457C" FontWeight="Normal" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Margin="10,0,0,0" />

    </Grid>

</DataTemplate>

<!--Custom expander items template-->
<DataTemplate x:Key="ExpanderViewItems" >

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="15" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Image Source="{Binding flagIcon}" Grid.Row="0" Grid.RowSpan="3" Grid.Column="0" />
        <TextBlock FontSize="26" Text="{Binding N}" Foreground="Black" FontWeight="Normal" Grid.Row="0" Grid.Column="1"/>
        <TextBlock FontSize="20" Text="{Binding RNG}" Foreground="Black" FontWeight="Normal" HorizontalAlignment="Right" Grid.Row="0" Grid.Column="2"/>                
        <TextBlock FontSize="26" Text="{Binding ValueAndUnit}" Foreground="Black" FontWeight="Medium" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"/>
        <TextBlock FontSize="18" Text="{Binding COM}" Foreground="Black" FontWeight="Normal" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" TextWrapping="Wrap" />
        <Line StrokeThickness="1" Stroke="#C4C6CC" Stretch="Fill" X1="0" X2="1" Y1="0" Y2="0" VerticalAlignment="Center" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" />
    </Grid>
</DataTemplate>

<!--Listbox Containing ExpanderViews-->
        <ListBox Name="testsList" Grid.Row="3" Grid.Column="0" >
            <ListBox.ItemTemplate>
                <DataTemplate>

                    <!--ExpanderView-->
                    <toolkit:ExpanderView Header="{Binding}"                                                   
                                          HeaderTemplate="{StaticResource CustomHeaderTemplate}"
                                          Expander="{Binding}"
                                          ExpanderTemplate="{StaticResource CustomExpanderTemplate}"
                                          x:Name="expander" 
                                          FontSize="36" 
                                          Foreground="#FF00457C" 
                                          ItemsSource="{Binding testItems}"
                                          ItemTemplate="{StaticResource ExpanderViewItems}" >                          
                    </toolkit:ExpanderView>

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

これで、ユーザーがエキスパンダー項目を選択したときにイベントを発生させるだけで済みますが、非常に面倒です。

ご提案ありがとうございます。

4

1 に答える 1

0

MouseLeftButtonUpGrid コントロールである ItemTemplate の Item Container でイベント ハンドラーを使用する必要があります。

<!--Custom expander items template-->
<DataTemplate x:Key="ExpanderViewItems" >

    <Grid MouseLeftButtonUp="ItemSelected">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="15" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Image Source="{Binding flagIcon}" Grid.Row="0" Grid.RowSpan="3" Grid.Column="0" />
        <TextBlock FontSize="26" Text="{Binding N}" Foreground="Black" FontWeight="Normal" Grid.Row="0" Grid.Column="1"/>
        <TextBlock FontSize="20" Text="{Binding RNG}" Foreground="Black" FontWeight="Normal" HorizontalAlignment="Right" Grid.Row="0" Grid.Column="2"/>                
        <TextBlock FontSize="26" Text="{Binding ValueAndUnit}" Foreground="Black" FontWeight="Medium" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"/>
        <TextBlock FontSize="18" Text="{Binding COM}" Foreground="Black" FontWeight="Normal" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" TextWrapping="Wrap" />
        <Line StrokeThickness="1" Stroke="#C4C6CC" Stretch="Fill" X1="0" X2="1" Y1="0" Y2="0" VerticalAlignment="Center" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" />
    </Grid>
</DataTemplate>
于 2012-10-31T10:51:49.023 に答える