一个综合性的WPF例子

本例重点:
资源的使用,类型转换,将笔刷(这里是LinearGradientBrush)应用于ListBox控件,BitmapEffect, DataTemplate的使用等.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <x:Array x:Key="array" Type="sys:Object">
      <sys:DateTime>
2101-09-22</sys:DateTime>
      <sys:DateTime>
2008-1-4 12:05:08</sys:DateTime>
      <sys:String>
Hello, World!</sys:String>
      <sys:Int32>
100</sys:Int32>
      <sys:Decimal>188</sys:Decimal>
      <sys:Int32>68</sys:Int32>
      <sys:String>WPF Book</sys:String>
    </x:Array>

    <LinearGradientBrush x:Key="borderBrush" StartPoint="0,0" EndPoint="0,1" Opacity="1">
      <LinearGradientBrush.GradientStops>
        <GradientStopCollection>
          <GradientStop Color="Yellow" Offset="0" />
          <GradientStop Color="Red" Offset="1" />
        </GradientStopCollection>
      </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="commonLGB" StartPoint="0,0" EndPoint="0,1">
      <GradientBrush.GradientStops>
        <GradientStopCollection>
          <GradientStop Color="Orange" Offset="0" />
          <GradientStop Color="#FFFF00" Offset="1" />
        </GradientStopCollection>
      </GradientBrush.GradientStops>
    </LinearGradientBrush>
    <DropShadowBitmapEffect x:Key="dropShadow" Color="Black" Direction="315" ShadowDepth="5" Softness="5" Opacity="0.75"/>

    <DataTemplate x:Key="myTaskTemplate">
      <StackPanel Width="160">
        <TextBlock Text="{Binding Path=.}" />
      </StackPanel>
      <DataTemplate.Resources>
        <Style TargetType="TextBlock">
          <Setter Property="FontSize" Value="12"/>
          <Setter Property="HorizontalAlignment" Value="Center"/>
        </Style>

        <Style TargetType="StackPanel">
          <Setter Property="Background" Value="{StaticResource commonLGB}">
          </Setter>
        </Style>
      </DataTemplate.Resources>

    </DataTemplate>
    <DataTemplate DataType="{x:Type sys:String}">
      <Border BorderBrush="Blue" BorderThickness="1" Background="#EEFFFF">
        <TextBlock Text="{Binding}" Foreground="Brown" FontWeight="Bold" Padding="5"/>
      </Border>
    </DataTemplate>
    <DataTemplate DataType="{x:Type sys:DateTime}">
      <Border BorderBrush="Green" BorderThickness="2" CornerRadius="5">
        <TextBlock Text="{Binding}" Foreground="Green" FontWeight="Bold" Padding="5"/>
      </Border>
    </DataTemplate>
    <DataTemplate DataType="{x:Type sys:Int32}">
      <Border BorderBrush="Purple" BorderThickness="3" CornerRadius="30">
        <TextBlock Text="{Binding}" Foreground="Purple" FontWeight="Bold" Padding="5"/>
      </Border>
    </DataTemplate>
    <DataTemplate DataType="{x:Type sys:Decimal}">
      <Border BorderBrush="Red" BorderThickness="4" CornerRadius="5" Background="Yellow">
        <TextBlock Text="{Binding}" Foreground="DarkOrange" FontWeight="Bold" Padding="30"/>
      </Border>
    </DataTemplate>
  </Page.Resources>

  <Canvas>
    <ListBox ItemsSource="{Binding Source={StaticResource array}, Path=.}" IsSynchronizedWithCurrentItem="true"
ItemTemplate="{StaticResource myTaskTemplate}" BorderThickness="3" BorderBrush="{StaticResource borderBrush}"
BitmapEffect="{StaticResource dropShadow}"
 Canvas.Top="5" Canvas.Left="5">

      <ListBox.Style>
        <Style TargetType="{x:Type ListBox}">
          <Setter Property="Background">
            <Setter.Value>
              <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                <GradientBrush.GradientStops>
                  <GradientStopCollection>
                    <GradientStop Color="Orange" Offset="0" />
                    <GradientStop Color="#FFFF00" Offset="1" />
                  </GradientStopCollection>
                </GradientBrush.GradientStops>
              </LinearGradientBrush>
            </Setter.Value>
          </Setter>
        </Style>
      </ListBox.Style>
    </ListBox>
    <ContentControl Canvas.Left="200" Content="{Binding Source={StaticResource array}, Path=/}" />
  </Canvas>
</Page> 

有空再作阐述.

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我可以回答这个问题。WPF Prism 是一个用于构建可扩展、模块化 WPF 应用程序的框架。下面是一个简单的 WPF Prism 示例: 1. 创建一个新的 WPF 应用程序项目。 2. 在项目中添加 Prism 库的引用。 3. 在 App.xaml.cs 文件中,添加以下代码: using Prism.Unity; using Microsoft.Practices.Unity; namespace WpfPrismExample { public partial class App : PrismApplication { protected override void RegisterTypes(IUnityContainer container) { // 注册服务 container.RegisterType<IMyService, MyService>(); } protected override void ConfigureModuleCatalog() { // 配置模块 ModuleCatalog.AddModule(new ModuleInfo() { ModuleName = "MyModule", ModuleType = typeof(MyModule), InitializationMode = InitializationMode.WhenAvailable }); } protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // 启动应用程序 var mainWindow = Container.Resolve<MainWindow>(); mainWindow.Show(); } } } 4. 创建一个名为 MyModule 的模块,并在其中添加一个名为 MyView 的视图和一个名为 MyViewModel 的视图模型。 5. 在 MainWindow.xaml 中,添加以下代码: <Window x:Class="WpfPrismExample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:prism="http://prismlibrary.com/" Title="MainWindow" Height="350" Width="525"> <Grid> <prism:RegionManager.RegionName="MainRegion" /> </Grid> </Window> 6. 在 MainWindow.xaml.cs 中,添加以下代码: using Prism.Regions; namespace WpfPrismExample { public partial class MainWindow : Window { public MainWindow(IRegionManager regionManager) { InitializeComponent(); // 注册区域 regionManager.RegisterViewWithRegion("MainRegion", typeof(MyView)); } } } 这个例子演示了如何使用 WPF Prism 构建一个简单的模块化应用程序。当应用程序启动时,它会加载 MyModule 模块,并在 MainWindow 中显示 MyView 视图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值