Я работаю над своим первым приложением UWP, и хочу создать UI, как этот . Для каждого элемента списка (проекта) будет набор кнопок. Для некоторых элементов списка (проектов) некоторые из этих кнопок будут отключены несколько раз. Поэтому мне нужно отключить и изменить изображение для такой кнопки в этих элементах списка (проектах).Кнопки UWP внутри элементов списка ListView
Я попытался реализовать его, используя вид списка, подобный этому. Но я не уверен, как я могу включить/отключить некоторые из этих кнопок в зависимости от условия.
Попытался добавить событие DataContextChanged и попытаться получить доступ к кнопкам. Но не знаю, как я могу получить доступ к этим кнопкам.
Пожалуйста, дайте мне знать, подходит ли следующий подход или есть лучший способ сделать то, что я пытаюсь достичь в приведенном выше изображении.
<ListView x:Name="stepsListView" Margin="10,0,0,0" RequestedTheme="Dark" FontSize="24" Background="{StaticResource procedure_app_white}" Foreground="Black" BorderThickness="1.5" BorderBrush="Transparent" ItemsSource="{Binding projectList}" HorizontalAlignment="Left">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<!-- Item -->
<ListView.ItemTemplate>
<DataTemplate>
<Border BorderThickness="0,0,0,1" BorderBrush="#c0c0c0">
<Grid Width="auto" HorizontalAlignment="Stretch" DataContextChanged="Grid_DataContextChanged" >
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="Center" FontSize="30" Grid.Row="0" Grid.ColumnSpan="7" Text="{Binding projectName}" Foreground="{StaticResource procedure_app_orange_text }" />
<Button x:Name="warningButton" Width="40" Height="40" Grid.Column="1" Grid.Row="1" Tag="{Binding projectId}" Click="warningButtonClick" Foreground="{StaticResource procedure_app_orange_text }">
<Button.Background>
<ImageBrush ImageSource="Asset/step_ncwr.png">
</ImageBrush>
</Button.Background>
</Button>
<Button x:Name="commentButton" Width="40" Height="40" Grid.Column="2" Grid.Row="1" Tag="{Binding projectId}" Click="CommentButtonClick" Foreground="{StaticResource procedure_app_orange_text }" IsTapEnabled="True">
<Button.Background>
<ImageBrush ImageSource="Asset/step_comment.png">
</ImageBrush>
</Button.Background>
</Button>
<Button x:Name="imageButton" Width="40" Height="40" Grid.Column="3" Grid.Row="1" Tag="{Binding projectId}" Click="ImageButtonClick" Foreground="{StaticResource procedure_app_orange_text }">
<Button.Background>
<ImageBrush ImageSource="Asset/step_image.png">
</ImageBrush>
</Button.Background>
</Button>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
Thank вы очень много Энтони за подробный ответ. Поэтому, если я хочу изменить изображение при отключении. Мне нужно определить другое свойство в ProjectModel, например ncwrImage, и установить изображение в зависимости от условия и установить как ImageSource = "{Binding ncwrImage}" в ImageBrush. Это верно? – Madhu
Если вы хотите изменить изображения, я бы создал триггер данных, который переключил источник изображения на основе включенного свойства модели. –
http://stackoverflow.com/questions/1786477/change-image-using-trigger-wpf-mvvm –