初步尝试WPF

来源:互联网 发布:心动网络 仙境传说 编辑:程序博客网 时间:2024/05/24 06:49

这两天初步尝试了一下WPF,确实功能强大。(版权属章松山所有,严禁转载)

先是研究了如何设置启动xaml,一种有两种方法,最直接的一直就是在App.xaml中设置StartupUri属性,另外一种是设置Startup属性,该属性值为方法名,然后在后台方法中写启动xaml。比如方法名为app_Startup,代码如下:

void app_Startup(object sender, StartupEventArgs e)

{
            Test t = new Test();//Test为xaml文件
            t.Show();
}

紧接着研究了样式(版权属章松山所有,严禁转载),样式是写在App.xaml中的〈Application Resources>中的,如下面的代码所示:

<Style TargetType ="{x:Type Button}">
            <Setter Property ="Background" Value ="Blue"/>
</Style>
<Style x:Key="SmartButton" TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Yellow"></Setter>
</Style>

第一种类似CSS样式中的body,p这样的样式写法,全局样式,整个项目中的Button如没有加样式,就默认是这个样式。

第二种应用某个对象,只要再对象上的style属性上加入其值就可以了,如Style="{StaticResource SmartButton}"

 

接下来我发现WPF很有意思,功能也很强大的地方(版权属章松山所有,严禁转载),即数据绑定。

<Grid>

        <Grid.RowDefinitions>

            <RowDefinition Height="*" />

            <RowDefinition Height="Auto" />

            <RowDefinition Height="22" />

        </Grid.RowDefinitions>

        <ListView Name="listView1" MinWidth="280" >

            <ListView.View>

                <GridView x:Name="gridView1">

                    <GridViewColumn Header="ContactID" DisplayMemberBinding="{Binding Path=ID}"></GridViewColumn>

                    <GridViewColumn Header="FirstName" DisplayMemberBinding="{Binding Path=ENWordName}"></GridViewColumn>

                    <GridViewColumn Header="LastName" DisplayMemberBinding="{Binding Path=ENWordContent}"></GridViewColumn>

                    <GridViewColumn Header="EmailAddress" DisplayMemberBinding="{Binding Path=CNWordName}"></GridViewColumn>

                </GridView>

            </ListView.View>

        </ListView>

        <WrapPanel Grid.Row="1" Orientation="Horizontal" DataContext="{Binding ElementName=listView1,Path=SelectedItem}">
            <StackPanel Orientation="Horizontal" Margin="5,2,5,2">

                <TextBlock Name="textBlock_ContactID" Text="ContactID:" />

                <TextBox Name="textBox_ContactID" MinWidth="100" Text="{Binding ID}" />

            </StackPanel>

            <StackPanel Orientation="Horizontal" Margin="5,2,5,2">

                <TextBlock Name="textBlock_FirstName" Text="FirstName:" />

                <TextBox Name="textBox_FirstName" MinWidth="100" Text="{Binding ENWordName,UpdateSourceTrigger=PropertyChanged}"  />

            </StackPanel>

<StackPanel Orientation="Horizontal" Margin="5,2,5,2">

后台代码如下:

先定义两个全局变量(版权属章松山所有,严禁转载,否则追究法律责任)

SqlDataAdapter sda;
DataTable dt;

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
            scsb.DataSource = "数据库机器名";
            //scsb.IntegratedSecurity = true;
            scsb.InitialCatalog = "数据库";
            scsb.UserID = "用户名";
            scsb.Password = "密码";
            SqlConnection sc = new SqlConnection(scsb.ConnectionString);
            SqlCommand sqlComm = sc.CreateCommand();
            sqlComm.CommandText = "select * from 表名";
            sda = new SqlDataAdapter(sqlComm);
            dt = new DataTable();
            sda.Fill(dt);
            listView1.ItemsSource = dt.DefaultView;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            SqlCommandBuilder scb = new SqlCommandBuilder(sda);
            sda.UpdateCommand = scb.GetUpdateCommand();
            sda.Update(dt);//此处很牛B,但表中一定要有主键才能这么用。
        }

就这样就搞定了数据的同步,文本框中一修改,GridView中立刻就会看到,不过要点提交后数据才能真正到数据库中去。

That's all.此文属于章松山所以,严禁转载,如有问题要咨询,请Email到zhangsongshan10@163.com

                <TextBlock Name="textBlock_LastName" Text="LastName:" />

                <TextBox Name="textBox_LastName" MinWidth="100" Text="{Binding ENWordContent}" />

            </StackPanel>

            <StackPanel Orientation="Horizontal" Margin="5,2,5,2">

                <TextBlock Name="textBlock_EmailAddress" Text="EmailAddress:" />

                <TextBox Name="textBox_EmailAddress" MinWidth="100" Text="{Binding CNWordName}"  />

            </StackPanel>

        </WrapPanel>

        <Button Grid.Row="2" HorizontalAlignment="Right" Click="button1_Click" Name="button1">Refresh</Button>

    </Grid>