2016-12-21 10 views
0

Я пытаюсь создать настраиваемый элемент управления, содержащий несколько списков с +/- кнопками. Вот мой код XAML:Как сделать интерактивные кнопки внутри ListViewItem с помощью WinRT?

<UserControl.Resources> 
    <Style TargetType="ListViewItem"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
    </Style> 
    <DataTemplate x:Key="lvheader"> 
     <Grid Background="#A0BBBBBB" Height="32"> 
      <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5,2" FontWeight="Medium" FontSize="14" Text="{Binding}" /> 
     </Grid> 
    </DataTemplate> 
    <DataTemplate x:Key="lvitem"> 
     <Grid> 
      <StackPanel Orientation="Horizontal"> 
       <Button>+</Button> 
       <Button>-</Button> 
       <TextBlock VerticalAlignment="Center" TextAlignment="Left" Text="{Binding Path=Name}" /> 
      </StackPanel> 
      <TextBlock VerticalAlignment="Center" TextAlignment="Right" Text="{Binding Path=Count}" /> 
     </Grid> 
    </DataTemplate> 
</UserControl.Resources> 
<Grid Background="#E0020210"> 
    <Border CornerRadius="6" Padding="5" Background="#242424" BorderBrush="#CBCBCB" BorderThickness="1" Width="850" Height="450" VerticalAlignment="Center" HorizontalAlignment="Center"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="*" /> 
       <RowDefinition Height="auto" /> 
      </Grid.RowDefinitions> 
      <ListView SelectionMode="None" Name="imgStyles" Header="Image Style" HeaderTemplate="{StaticResource lvheader}" ItemTemplate="{StaticResource lvitem}" ItemsSource="{Binding Path=GenericTags}" /> 
      <ListView SelectionMode="None" Name="imgCopyrights" Grid.Column="1" Header="Image Copyright" HeaderTemplate="{StaticResource lvheader}" ItemTemplate="{StaticResource lvitem}" ItemsSource="{Binding Path=CopyrightTags}" /> 
      <ListView SelectionMode="None" Name="imgCharacters" Grid.Column="2" Header="Image Character" HeaderTemplate="{StaticResource lvheader}" ItemTemplate="{StaticResource lvitem}" ItemsSource="{Binding Path=CharacterTags}" /> 
      <TextBlock VerticalAlignment="Center" Text="Rating:" Grid.Row="1" /> 
      <ComboBox Margin="4" Grid.Row="1" Grid.Column="1" Name="rating" ItemsSource="{Binding Path=AllRatings}" /> 
      <Button Margin="2" HorizontalAlignment="Stretch" Grid.Column="2" Grid.Row="1" Content="Search!" Click="Button_Click" /> 
      <Grid Grid.RowSpan="2" Grid.ColumnSpan="3" Name="pw" Background="#EE111111" Visibility="Collapsed"> 
       <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> 
        <ProgressRing Width="96" Height="96" Background="Transparent" IsActive="True" /> 
        <TextBlock Text="Loading..." TextAlignment="Center" FontSize="15" /> 
       </StackPanel> 
      </Grid> 
     </Grid> 
    </Border> 
</Grid> 

С этой установкой я не могу нажать кнопку [+]/- кнопки []. Вместо этого выбирается ListViewItem, если я не нажму кнопку на границе кнопки. Тогда это работает.

Я помню, как это решалось давно, но я понятия не имею, как я это сделал. Какой был бы лучший способ справиться с этим?

+0

Добавить свойство ClickMode = "Нажать" на ваших кнопках –

+0

@ChrisW. это не работает. Он все еще не позволяет мне использовать кнопки обычно – Reynevan

+0

Oooh - свойство clickmode не в rt? Я не выглядела так, может быть, нет. Я также не заметил той части, где вы упоминаете, что кнопка кнопки, кажется, запускает событие, которое не имеет смысла. –

ответ

0

@ CherryBu-MSFT Я немного смущен. Что добавляет команду на самом деле изменить поведение кнопки?

Извините за задержанный ответ.

В соответствии с указанным выше вопросом вы можете создавать общедоступные методы, которые являются «командами», и связывать их с вашей кнопкой, чтобы при запуске события нажатия кнопки выполнялась команда в модели представления.

Дополнительная информация, вы можете обратиться к this thread.

+0

Но как это поможет, если событие 'Click' запускается только тогда, когда пользователь нажимает на границу кнопки/около нее? Это то, что я пытаюсь исправить, а не назначать действительное действие кнопке. – Reynevan

0

Думаю, вам просто нужно изменить текущий DataRepeater. Я не думаю, что ListView является правильным выбором, если вы хотите отображать кнопки в «упорядоченном списке». (Я просто догадываюсь здесь)

Пробовали элемент управления ItemsControl? Это основной компонент, используемый ListView, если я правильно это помню. Но главное преимущество заключается в том, что, хотя у него все еще есть свойство bindable ItemsSource, оно не обеспечивает какого-либо причудливого поведения «выбора».

См. documentation.

Однако более подробная информация о том, что вы пытаетесь достичь, будет отличной помощью, чтобы дать вам правильный ответ.

 Смежные вопросы

  • Нет связанных вопросов^_^