• DataTemplate 之 ContentTemplate 的使用


    <Window x:Class="WpfApplication1.Window36"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication1.Model"
    Title="Window36" Height="350" Width="623">
    <Window.Resources>
    <!--Converter-->
    <local:AutoMarkToLogoPathConverter x:Key="amp"/>
    <local:NameToPhotoPathConverter x:Key="npp"/>
    <!--DataTemplate For DatialView-->
    <DataTemplate x:Key="DatialViewTemplate">
    <Border BorderBrush="Black" BorderThickness="1" CornerRadius="6">
    <StackPanel>
    <Image x:Name="imgPhoto" Width="400" Height="250" Source="{Binding AutoMark,Converter={StaticResource npp}}"></Image>
    <StackPanel Orientation="Horizontal" Margin="5,0">
    <TextBlock Text="Name:" FontSize="20" FontWeight="Bold"></TextBlock>
    <TextBlock FontSize="20" Margin="5,0" Text="{Binding Name}"></TextBlock>
    </StackPanel>
    <StackPanel Orientation="Horizontal" Margin="5,0">
    <TextBlock Text="AutoMark:" FontWeight="Bold"></TextBlock>
    <TextBlock Margin="5,0" Text="{Binding AutoMark}"></TextBlock>
    <TextBlock Text="Year:" FontWeight="Bold">

    </TextBlock>
    <TextBlock Text="{Binding Year}" Margin="5,0">

    </TextBlock>
    <TextBlock Text="Top Speed:" FontWeight="Bold">

    </TextBlock>
    <TextBlock Text="{Binding TopSpeed}" Margin="5,0">

    </TextBlock>
    </StackPanel>
    </StackPanel>
    </Border>
    </DataTemplate>
    <!--Data Template For ItemView-->
    <DataTemplate x:Key="ItemView">
    <Grid Margin="2">
    <StackPanel Orientation="Horizontal">
    <Image x:Name="igLogo" Grid.RowSpan="3" Width="64" Height="64" Source="{Binding Name,Converter={StaticResource amp}}"></Image>
    <StackPanel Margin="5,10">
    <TextBlock Text="{Binding Name}" FontSize="16" FontWeight="Bold"></TextBlock>
    <TextBlock Text="{Binding Year}" FontSize="14"></TextBlock>
    </StackPanel>
    </StackPanel>
    </Grid>
    </DataTemplate>
    </Window.Resources>
    <!--窗体内容-->
    <StackPanel Orientation="Horizontal">
    <UserControl ContentTemplate="{StaticResource DatialViewTemplate}" Content="{Binding Path=SelectedItem,ElementName=lbInfos}"></UserControl>
    <ListBox x:Name="lbInfos" ItemTemplate="{StaticResource ItemView}"></ListBox>
    </StackPanel>
    </Window>

    convertor 转换类

    ----------------------------------------------------------------------------------------

    public class AutoMarkToLogoPathConverter:IValueConverter
    {
    /// <summary>
    /// 正向转
    /// </summary>
    /// <param name="value"></param>
    /// <param name="targetType"></param>
    /// <param name="parameter"></param>
    /// <param name="culture"></param>
    /// <returns></returns>
      public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
      {
        return new BitmapImage(new Uri(string.Format(@"Resource/Image/{0}.png",(string)value),UriKind.Relative));
      }
    /// <summary>
    /// 逆向转未用到
    /// </summary>
    /// <param name="value"></param>
    /// <param name="targetType"></param>
    /// <param name="parameter"></param>
    /// <param name="culture"></param>
    /// <returns></returns>
      public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
      {
        throw new NotImplementedException();
      }
    }

    model 

    ------------------------------------------------------------------------------------------------------------

    public partial class Window36 : Window
    {
    public Window36()
    {
      InitializeComponent();
      InitialCarList();
    }

    private void InitialCarList()
    {
      List<Car> infos = new List<Car>() {
      new Car(){ AutoMark="Aodi", Name="Aodi", TopSpeed="200", Year="1990"},
      new Car(){ AutoMark="Aodi", Name="Aodi", TopSpeed="250", Year="1998"},
      new Car(){ AutoMark="Aodi", Name="Aodi", TopSpeed="300", Year="2002"},
      new Car(){ AutoMark="Aodi", Name="Aodi", TopSpeed="350", Year="2011"},
      new Car(){ AutoMark="Aodi", Name="Aodi", TopSpeed="500", Year="2020"}
    };
      this.lbInfos.ItemsSource = infos;
    }
    }

  • 相关阅读:
    VS2010 枚举注释任务
    osg例子中文翻译,半机翻
    怎么愉快地添加目标位置?
    变更路线节点。妈妈,我的强迫症有救啦!
    测试必备工具之抓包神器 Charles 如何抓取 https 数据包?
    测试必备工具之最强抓包神器 Charles,你会了么?
    ‘员工拒绝加班被判赔偿公司 1.8 万元’,作为测试猿你怕了么?
    全网最全测试点总结:N95 口罩应该如何测试?
    测试角度:如何看待三星大量手机系统崩溃并数据丢失事件?
    男生 vs 女生,谁更加适合做软件测试?
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14152534.html
Copyright © 2020-2023  润新知