實現一個切換配方的功能

孤沉發表於2024-08-30

程式碼如下

public class Student : BindableBase
{
    private string _title;

    public string Title
    {
        get => _title;
        set => SetProperty(ref _title, value);
    }

    private string _name;

    public string Name
    {
        get => _name;
        set => SetProperty(ref _name, value);
    }
    private string _password;

    public string Password
    {
        get => _password;
        set => SetProperty(ref _password, value);
    }
}

public class StudentList : ObservableCollection<Student>
{
    public StudentList()
    {
        Add(
            new Student()
            {
                Title = "標題1",
                Name = "123",
                Password = "123"
            }
        );
        Add(
            new Student()
            {
                Title = "標題2",
                Name = "456",
                Password = "456"
            }
        );
        Add(
            new Student()
            {
                Title = "標題3",
                Name = "789",
                Password = "789"
            }
        );
    }
}

 <Window.Resources>
     <Style TargetType="{x:Type Button}">
         <Setter Property="Background" Value="Transparent" />

         <Setter Property="Padding" Value="0" />
         <Setter Property="Template">
             <Setter.Value>
                 <ControlTemplate TargetType="Button">
                     <Border Background="{TemplateBinding Background}">
                         <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                     </Border>
                     <ControlTemplate.Triggers>
                         <Trigger Property="IsPressed" Value="True">
                             <!--  定義按鈕被按下時的樣式  -->
                             <Setter Property="Background" Value="Aqua" />
                         </Trigger>
                     </ControlTemplate.Triggers>
                 </ControlTemplate>
             </Setter.Value>
         </Setter>
     </Style>
     <Style TargetType="{x:Type ListBox}">
         <Setter Property="Background" Value="Transparent" />
         <Setter Property="BorderBrush" Value="Transparent" />
         <Setter Property="BorderThickness" Value="0" />
     </Style>
     <ObjectDataProvider x:Key="MyStudent" ObjectType="{x:Type local:StudentList}" />
     <!--<DataTemplate DataType="{x:Type local:Student}">
         <Button
             Width="100"
             Command="{Binding DataContext.SelectedViewCommand, ElementName=win}"
             Content="{Binding Title}" />
     </DataTemplate>-->
     <DataTemplate x:Key="DetailTemplate">
         <Border
             Width="300"
             Height="100"
             Margin="20"
             Padding="8"
             BorderBrush="Aqua"
             BorderThickness="1">
             <Grid>
                 <Grid.RowDefinitions>
                     <RowDefinition />
                     <RowDefinition />
                     <RowDefinition />
                 </Grid.RowDefinitions>
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition />
                     <ColumnDefinition />
                 </Grid.ColumnDefinitions>
                 <TextBlock
                     Grid.Row="0"
                     Grid.Column="0"
                     Text="Title:" />
                 <TextBlock
                     Grid.Row="0"
                     Grid.Column="1"
                     Text="{Binding Path=Title}" />
                 <TextBlock
                     Grid.Row="1"
                     Grid.Column="0"
                     Text="Name:" />
                 <TextBlock
                     Grid.Row="1"
                     Grid.Column="1"
                     Text="{Binding Path=Name}" />
                 <TextBlock
                     Grid.Row="2"
                     Grid.Column="0"
                     Text="Password:" />
                 <TextBlock
                     Grid.Row="2"
                     Grid.Column="1"
                     Text="{Binding Path=Password}" />
             </Grid>
         </Border>
     </DataTemplate>
 </Window.Resources>
 <Grid>
     <Grid.RowDefinitions>
         <RowDefinition Height="40" />
         <RowDefinition />
     </Grid.RowDefinitions>

     <ListBox
         Margin="10,0,10,0" IsSynchronizedWithCurrentItem="True" ScrollViewer.VerticalScrollBarVisibility="Disabled"
         ItemsSource="{Binding Source={StaticResource MyStudent}}"
         SelectedIndex="0"
         SelectionMode="Single">
         <ListBox.ItemsPanel>
             <ItemsPanelTemplate>
                 <StackPanel Orientation="Horizontal" />
             </ItemsPanelTemplate>
         </ListBox.ItemsPanel>
         <ListBox.ItemTemplate>
             <DataTemplate>
                 <TextBlock Margin="10" FontSize="16" FontWeight="Bold" FontFamily="楷體" Text="{Binding Title}" />
             </DataTemplate>
         </ListBox.ItemTemplate>
         <ListBox.ItemContainerStyle>
             <Style TargetType="ListBoxItem">
                 <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                 <Setter Property="BorderThickness" Value="0" />
                 <Setter Property="Background" Value="Transparent" />
                 <Setter Property="Template">
                     <Setter.Value>
                         <ControlTemplate TargetType="{x:Type ListBoxItem}">
                             <Grid>
                                 <Border Name="border" />
                                 <ContentPresenter />
                             </Grid>
                             <ControlTemplate.Triggers>
                                 <Trigger Property="IsSelected" Value="True">
                                     <Setter TargetName="border" Property="Background" Value="Transparent" />
                                 </Trigger>
                             </ControlTemplate.Triggers>
                         </ControlTemplate>
                     </Setter.Value>
                 </Setter>
             </Style>
         </ListBox.ItemContainerStyle>
     </ListBox>

     <ContentControl Grid.Row="1" Content="{Binding Source={StaticResource MyStudent}}"
         ContentTemplate="{StaticResource DetailTemplate}"/>
 </Grid>

相關文章