纸媒不死,死的是价值观纸媒销售措施

纸媒的仇敌不是新媒体——快餐阅读和捧书卒读是三种体验。
纸媒的敌人是电商——价格上的逆风局可以经过变更销售办法弥补。

[索引页]
[源码下载]

揣度15号的留学申请工作量因为13号中午没睡而减半,搞到半天休息时间。

从长商议Silverlight(50) – 4.0绑定之DependencyObject绑定, 索引器绑定,
StringFormat, TargetNullValue和FallbackValue, CollectionViewSource

去楚河汉街闲逛找吃的,路过文轩书店,半上午就搭进去了。遇见一件有趣的事,暴发了一些有意思的想法。

作者:webabcd

事情的导火线是这么的,刚进文轩书店,摆在门口的就是艺术类,一堆解析梵高的书,加上一堆新艺术家的画作。在一堆书里面,瞬间被如此骚气的封皮吸引住了:

介绍
Silverlight 4.0 绑定相关的坚实:

小顾聊绘画·贰

  • DependencyObject Binding – 新增了对 DependencyObject 绑定的帮衬 
  • Indexer Binding – 新增了对索引器绑定的帮忙 
  • StringFormat – 内定绑定数据的显得格式 
  • TargetNullValue – 当绑定数据为 null 时所急需出示的值 
  • FallbackValue – 当绑定战败(不恐怕重临值)的时候所需要显示的值 
  • CollectionViewSource – 完成了 ICollectionView
    的类,可以经过它对数码排序、筛选和分组 

然后拿着翻看,图文并茂,最重点是文字部分,看到的地方正好是分析有个别画家不想娶人,偏偏又把给对方看的自画像画得帅气无比。这种不愿为任何业务折损自身帅气模样的执着神态不正是和自个儿硬汉所见略同吗?当即决定要买。翻过来看价格,39.5位民币。

在线DEMO
http://www.cnblogs.com/webabcd/archive/2010/08/09/1795417.html

摸摸毛主席,依旧拿入手机雕塑,打算重回当当上买便宜不少。感觉仍旧挺愧疚,有种看人妹子美丽只是嫌贵就上某软件约1个便民的那种罪恶感。

示例
① 、演示怎样绑定到 DependencyObject
DependencyObjectBinding.xaml

其一时半刻候有趣的事情来了,转过头去发现二个二姨在拍封面,往前走两步三个阿姨娘在拍封面,再转身五个大叔在拍封面。真是人人都有互连网思维。

图片 1图片 2代码

去书店看书,看上眼的就拍封面回去买,那样的心境表达了什么样?

<navigation:Page x:Class=”Silverlight40.Binding.DependencyObjectBinding” 
           xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
           xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 
           xmlns:d=”http://schemas.microsoft.com/expression/blend/2008
           xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006
           xmlns:navigation=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation”
           Title=”DependencyObjectBinding Page”>
    <Grid x:Name=”LayoutRoot”>
        <StackPanel HorizontalAlignment=”Left”>

表明纸媒不死

            <!– 
                Silverlight 3.0 支持绑定到 FrameworkElement 
                    TextBox 继承自 FrameworkElement
            –>
            <TextBox Text=”{Binding ElementName=slider, Path=Value}” />

干什么明明可以在家里泡杯咖啡上网浏览当当亚马逊(亚马逊)狗东某猫买书却偏偏要那样劳苦天寒地冻跑这么远来书店客串雕塑师?

            <!– 
                Silverlight 4.0 中新增了对 DependencyObject 绑定的支持
                    RotateTransform 继承自 DependencyObject
            –>
            <Rectangle Width=”100″ Height=”100″ RenderTransformOrigin=”0.5, 0.5″ Fill=”Red”>
                <Rectangle.RenderTransform>
                    <RotateTransform Angle=”{Binding ElementName=slider, Path=Value}” />
                </Rectangle.RenderTransform>
            </Rectangle >

因为装帧本人就是一种方法,排版、纸张、书封、腰封、书脊、大小。当电子书用一张295X420像素的混淆封面图统一全体图书,那种装帧艺术彻底从不了:

            <Slider Name=”slider” Height=”20″ Minimum=”0″ Maximum=”360″ />

恋上书|一本书是哪些做出来的

        </StackPanel>
    </Grid>
</navigation:Page>

肥肉(书)

2、演示如何绑定到索引器
IndexerBinding.xaml

因为逛书店拿到的是多重感官认知,视觉、触觉、嗅觉(墨香)、听觉(书店背景音乐)。在英剧《生活大爆炸》第捌季里面有一集,说飞机应该携带如何的新闻能担保外星人拿到新闻。最终的结果是触觉+视觉,因为外星人不自然看得见,但就现阶段生人认知而言,还不存在没有形态、不持有触觉的生命体。当逛书店的时候,触碰到纸质书本人就是一种与阴冷金属截然差其余快感:

图片 3图片 4代码

left: 贫者之美,硬质书壳,手感极度好;right:
人与土地,书脊设计得可以完全翻开书页

<navigation:Page x:Class=”Silverlight40.Binding.IndexerBinding” 
           xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
           xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 
           xmlns:d=”http://schemas.microsoft.com/expression/blend/2008
           xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006
           xmlns:navigation=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation”
           Title=”IndexerBinding Page”>
    <Grid x:Name=”LayoutRoot”>

因为书店分类的各本性。有专柜是特别放心情医务卫生人员写的书本;有专柜是专门放涂色书。实体书店的归类可以根据销售量火速调动。电商书籍为了完善显示书籍,也因为书籍分类调整表示大批量代码工作量,分类一般比较原则性。

        <!–
            用于演示索引器的绑定
        –>
        <TextBlock Name=”textBlock” Text=”{Binding Path=[3] }” />

因为心里知足感。假设本身逛街逛了一下午,会觉得没学到什么样。可是逛书店逛了一深夜,想想就觉着逼格高。

    </Grid>
</navigation:Page>

因为版本更新快捷。电商书籍便宜大多是因为版本更新之后,前版图书打折所以价格低。逛了一早上书店,发现许多耳熟能详的名字和区其他长相:

IndexerBinding.xaml.cs

肠子 | left new right old

图片 5图片 6代码

佐藤可士和经营术 | left new right old

/*
 * Silverlight 4.0 中新增了对索引器绑定的支撑,索引的品种必须兑现 IList
 */

因为预览形式的出入。书店里面可以翻到任何一页看其它内容,图画、难点、字体、字大小、排版都以作者想要突显的。电商能表现的最多是寥寥几段内容和统一的排版。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;

在书店拍照回去买是一种下意识的判定,因为网上更方便能省钱。可是从另多个角度看,逛书店对这几个人的话是有意义的。由此纸媒(更具象说是实体书店)应对电商的办法应该是尽量发掘优势,同时吸取电商的做法来弥补逆风局。

namespace Silverlight40.Binding
{
    public partial class IndexerBinding : Page
    {
        public IndexerBinding()
        {
            InitializeComponent();
        }

从3个平常的实体书店书籍购买者,作者盼望取得的经验是这么的:

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            List<string> list = new List<string>();
            for (int i = 0; i < 10; i++)
            {
                list.Add(“索引:” + i.ToString());
            }

观看吸引小编的书皮能不管翻看。看完今后能有法子看读过那本书的人的评价。明确要买的话作者期望寓目能获取的最优惠的标价。送书上门,而不是本人要好抱回来。

            textBlock.DataContext = list;
        }
    }
}

有一种方法能相比便利的到位这或多或少:每本提供跟读者试看的书籍贴上二维码,标上能提供的最低价位。用户扫二维码进书店自个儿的网上平台(可能豆瓣读书之类的读书平台,依据访问量分成),看外人读后感。那些平台可以提供在线下单,下单之后送货服务既可以书店自个儿提供,也得以协同电商分成。

③ 、演示在绑定时行使 StringFormat 来钦定数量的来得格式
StringFormat.xaml

小编署名:Hongyang
Wang

版权申明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND
3.0

图片 7图片 8代码

<navigation:Page x:Class=”Silverlight40.Binding.StringFormat” 
           xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
           xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 
           xmlns:d=”http://schemas.microsoft.com/expression/blend/2008
           xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006
           xmlns:navigation=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation”
           Title=”StringFormat Page”>
    <Grid x:Name=”LayoutRoot”>

        <!–
            StringFormat – 指定绑定数据的显得格式
        –>
        <TextBlock Name=”textBlock” Text=”{Binding StringFormat=’yyyy-MM-dd HH:mm:ss’}” />
        
    </Grid>
</navigation:Page>

StringFormat.xaml.cs

图片 9图片 10代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;

namespace Silverlight40.Binding
{
    public partial class StringFormat : Page
    {
        public StringFormat()
        {
            InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            textBlock.DataContext = DateTime.Now;
        }
    }
}

4、演示 TargetNullValue 和 FallbackValue 的效果
TargetNullValueFallbackValue.xaml

图片 11图片 12代码

<navigation:Page x:Class=”Silverlight40.Binding.TargetNullValueFallbackValue” 
           xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
           xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 
           xmlns:d=”http://schemas.microsoft.com/expression/blend/2008
           xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006
           xmlns:navigation=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation”
           Title=”TargetNullValueFallbackValue Page”>
    <Grid x:Name=”LayoutRoot”>
        <StackPanel HorizontalAlignment=”Left” Name=”stackPanel”>

            <!–
                FallbackValue – 当绑定战败(不能重回值)的时候所急需出示的值
            –>
            <TextBlock Text=”{Binding Path=xxx, FallbackValue=’绑定战败时的默许值’}” />

            <!–
                TargetNullValue – 当绑定数据为 null 时所急需出示的值
            –>
            <TextBlock Text=”{Binding TargetNullValue=’绑定重回值为 null’}” />

        </StackPanel>
    </Grid>
</navigation:Page>

TargetNullValueFallbackValue.xaml.cs

图片 13图片 14代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;

namespace Silverlight40.Binding
{
    public partial class TargetNullValueFallbackValue : Page
    {
        public TargetNullValueFallbackValue()
        {
            InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            stackPanel.DataContext = null;
        }
    }
}

5、演示 CollectionViewSource 的应用
Product.cs

图片 15图片 16代码

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace Silverlight40.Binding
{
    // 实体类
    public class Product
    {
        public int ProductId { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
    }
}

ProductCollection.cs

图片 17图片 18代码

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

using System.Collections.Generic;

namespace Silverlight40.Binding
{
    public class ProductCollection : List<Product>
    {
        
    }
}

CollectionViewSource.xaml

图片 19图片 20代码

<navigation:Page x:Class=”Silverlight40.Binding.CollectionViewSource” 
           xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
           xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 
           xmlns:d=”http://schemas.microsoft.com/expression/blend/2008
           xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006
           xmlns:navigation=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation”
           xmlns:sdk=”http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk
           xmlns:c=”clr-namespace:System.ComponentModel;assembly=System.Windows”
           xmlns:local=”clr-namespace:Silverlight40.Binding”
           Title=”CollectionViewSource Page”>
    <Grid x:Name=”LayoutRoot”>

        <Grid.Resources>
            <local:ProductCollection x:Key=”products”>
                <local:Product ProductId=”1″ Name=”abc” Category=”CategoryA” />
                <local:Product ProductId=”2″ Name=”xyz” Category=”CategoryA” />
                <local:Product ProductId=”3″ Name=”webabcd” Category=”CategoryB” />
            </local:ProductCollection>

            <!–
                CollectionViewSource – 已毕了 ICollectionView 的类,可以透过它对数据排序、筛选和分组
                    CollectionViewSource.SortDescriptions – 内定排序格局
                        PropertyName – 钦点排序的字段
                        Direction – 钦点按升序依旧降序排序
                    CollectionViewSource.GroupDescriptions – 指定分组办法
                        PropertyName – 内定分组的字段
                        StringComparison – 内定是不是区分轻重缓急写等
            –>
            <CollectionViewSource x:Name=”dataSource” Source=”{StaticResource products}”>
                <CollectionViewSource.SortDescriptions>
                    <c:SortDescription PropertyName=”Name” Direction=”Descending” />
                </CollectionViewSource.SortDescriptions>
                <CollectionViewSource.GroupDescriptions>
                    <PropertyGroupDescription PropertyName=”Category” StringComparison=”CurrentCultureIgnoreCase” />
                </CollectionViewSource.GroupDescriptions>
            </CollectionViewSource>
        </Grid.Resources>

        <sdk:DataGrid ItemsSource=”{Binding Source={StaticResource dataSource}}” />

    </Grid>
</navigation:Page>

OK
[源码下载]