当前位置:首页 » 文件传输 » wpf如何实现系统日志上传
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

wpf如何实现系统日志上传

发布时间: 2022-06-21 20:24:34

1. wpf 怎么实现 窗口和窗口之间的传值页面和页面之间窗口和页面之间

我也是个WPF 新手,我知道的方法跟你所了解的差不多,就是在APP.XAML.CS中声明变量,
之后再全局调用。比如我在APP.XAML.CS中写PUBLIC INT A=0;,那么我在WINDOW1.XAML.CS里写((App)System.Windows.Application.Current).A就可以调用这个全局变量了,我目前了解到的只有这一个方法,应该还有其他的方法我没有接触到。

2. wpf 怎么把数据集合 以http 协议发送到服务器

数据绑定到对象集合
您可以利用WPF 提供的强大的数据服务,将数据集成到自己的应用程序里。用户界面元素既可以绑定到 CLR 对象,也可以绑定到XML源。数据源一方面管理数据项(业务对象)之间的关系,另一方面提供各种不同的数据绑定功能。对于不同类型的数据,有若干不同类型的数据源,包括ObjectDataProvider和XmlDataProvider。它们都实现了IDataSource接口,因此一旦数据源所引用的数据对象发生了改变,它所依赖的绑定就会得到通知。
在这个实验中,您将学习如何将property bag里面呈现的联系人集合ContactsList绑定到ListBox。
·创建单向绑定
1. 定义一个ObjectDataProvider,命名为”ContactList”。把它放在MainWindow.xaml文件,Window这个元素的Resources里,作为这个文件的一个资源。ObjectDataProvider的类型名设为ContactList集合类的全名(包括命名空间)。除此之外,MethodName属性被设值为程序集的名字:AddressBook。请确保将Window.Resource这段元素插入到Grid的定义之前。

Code highlighting proced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

<Window.Resources>
<ObjectDataProvider x:Key="ContactList"
MethodName="AddressBook.ContactList,AddressBook" />
</Window.Resources>
2. 利用Styles,您的应用、文档、或UI设计器可以将产品的风格统一化。数据模板则可以用来定义数据的显示外观。为了配置联系人列表数据的UI,请定义一个数据模板,命名为“ContactNameTemplate”,将ContactList里面联系人对象的FirstName属性绑定到一个TextBlock上。

Code highlighting proced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

<Window.Resources>
<ObjectDataProvider x:Key="ContactList"
MethodName="AddressBook.ContactList,AddressBook" />
<DataTemplate x:Key="ContactNameTemplate" >
<TextBlock Text="{Binding Path=FirstName}" />
</DataTemplate>
</Window.Resources>
3. 现在我们可以为联系人的ListBox指定ItemsSource并赋给它ContactNameTemplate。

Code highlighting proced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

<ListBox Name="allContacts"
SelectionChanged="ListItemSelected"
ItemsSource="{Binding }"
ItemTemplate="{DynamicResource ContactNameTemplate}"
IsSynchronizedWithCurrentItem="True">
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Add a Contact"
Click="LaunchNewContactWizard"/>
<MenuItem Header="Add a Group"
Click="NotImplementedMsg"/>
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
4. 接下来的工作就剩下设定DockPanel_LeftPane的数据上下文的值了。请将它设为Property Bag里面的ContactList。以下这行代码要放在MainWindow.xaml.cs文件中WindowLoaded方法里。

Code highlighting proced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

DockPanel_LeftPane.DataContext = Application.Current.Properties["ContactList"];
5. 构建并运行您的应用程序。这时候联系人的信息应该可以显示在左边面板的ListBox里了。

wordend 相关阅读:
以WPF作为UI的VS2010的截图介绍
为你解惑之WPF经典9问详解
WPF的本质:数据和行为
使用Window和Page功能创建一个向导
传统的导航是基于URI字符串的。导航到指定的URI,系统就会加载并呈现关联的页。结构化的导航则与这种方式不同,是基于对象调用PageFunction。若需要导航,您要创建适当的页功能的对象,并导航到该对象。系统不是加载和生成指定的页,而是初始化页功能对象,这个对象会控制下一步发生的动作。
在这个实验中,您将学习如何创建一个向导,这个向导用来将联系人添加到您的通讯簿里。您将使用Window和一些Page Functions,通过线性的拓扑结构,实现一个结构化的导航UI。
系统自动利用导航历史(日志)来记录导航信息。要从当前的页功能对象返回到之前的页功能对象,您需要调用OnReturn这个方法。系统会把堆栈里之前的页功能对象返回给您。有了这个特性,您可以从应用程序的某个页面很容易地返回到之前的页面,也可以在页面之间传递数据。
·“添加新联系人”向导
1. 我们的添加联系人向导AddContactWizard将由两个UI页面和一个调用页面组成。在向导结束后,数据会被返回给初始页面。首先要做的在MainWindow.xaml.cs里实现LaunchNewContactWizard这个事件处理函数,把AddContactWizard显示在屏幕的中间。

Code highlighting proced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

//
// Triggered when context menu or other toolbar option is clicked to launch
// 'Add new contact' wizard dialog
//
private void LaunchNewContactWizard(object sender, RoutedEventArgs e)
{
// for the Add Contact Wizard, lets start with a
// Navigation Window
NavigationWindow addContactWizard = new NavigationWindow();
addContactWizard.Title = "Contact Information";
addContactWizard.Width = 500;
addContactWizard.Height = 400;
addContactWizard.WindowStyle = WindowStyle.ToolWindow;
addContactWizard.Name = "AddContactWizard";

// point it to the initial page function with no UI
// this will call the subsequent page functions which have UI
addContactWizard.Source = new Uri("UILessPageFunction.xaml",
UriKind.Relative);

Application.Current.Properties["AddContactWizard"]
= addContactWizard;
addContactWizard.WindowStartupLocation
= WindowStartupLocation.CenterScreen;
addContactWizard.ShowDialog();
}
您也需要为System.Windows.NavigationWindow添加一个using指令:

Code highlighting proced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

using System.Windows.Navigation;

3. WPF制作项目所需要的硬件,软件,操作系统有哪些

WPF基础知识

快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识:

1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽然WPF是XAML配置的,但是总还是要写代码的,相信各位读者应该也都有这个基础了。

2) HTML语言:虽然WPF是窗体程序但是由于使用的XAML语言,如果以前接触过HTML、XHTML、ASP.NET之路的东西的话会,接受这些标签会很有帮助的,如果以前一直是从事win form开的人来说可能就要适应一下了。

3) 对C#中的代理、事件要做到熟练掌握,在.NET 3.0 版本后有增加了Routed Events,要想日后不糊涂,这个是基础。

4) 有一定的winform或ASP.NET经验,主要是对控件事件的处理要有写了解。

5) 拥有良好的面向对象的思想:思想是语言的升华(本人的OO思想完全是Java中领悟来的)。在WPF中,经常要灵活运用各种继承关系、多态、重载等,因此一定要把基础知识打牢固。

6) DataBinding要有所了解:Binding是WPF的一大亮点,在接触它以前如果接触国ADO.NET里面的DataBinding的话对相对起来会容易接受一点,虽然这两个有一定的不同。

7) 对设计模式要有一定的了解:当然是越深入越好了,在实际项目中,各种设计模式经常交融使用。

快速的识别并合理的运用,无论是在开发还是调试时都是非常高效的。另外,WPF存在的初衷即是表现与逻辑的松耦合,最普遍的情况就是XAML作为表现层,背后.cs文件作为逻辑层。因此,日后在从事项目工作时,要时刻谨记这一点,千万不可背道而驰。

不要为了凸显自己的某一些代码特长而将各种逻辑混写在一起,这样非常不实际的,这一点都在校生应该尤为重要。

8) 对XML的理解:XAML也是XML,对XML的理解绝对有助于快速的接受和使用XAML,并不需要多XML有多么高深的见解。

但是最好还是有空看一看XML相关的书籍http://www.w3.org/TR/2000/WD-xml-2e-20000814。无论是WPF、WCP以及底层一些的SOAP等都是很有帮助的。

WPF入手练习基础环境

开发环境:VS 2008

数据库:本机SQL Server 2005(这里给大家一个提醒,如果大家的机子是Windows XP的话,无论是home 或是 professional.

一定不要安装SQL Server 2005 Enterprise Edition,在《安装 SQL Server 2005 的硬件和软件要求》中“操作系统要求”列表有写到2005 Enterprise Edition 不支持 XP),建议安装Developer Edition,一定要安装数据库实例。

WPF练习内容

具备以上基础条件后,开始入手练习,大家不要抱怨入手练习有写难度,毕竟是快速入门要有一定的跳跃性:

我们要做一个WPF程序,功能很简单:

1) 从数据库(本地数据库(local)/AdventureWorks中的person.contact表中提取用户的ContactID,FirstName,LastName,EmailAddress数据,展示到Form上的一个ListView上。(由于是WPF练习,对于ADO.NET相关的东西在此不做介绍,知识使用而已)

2) 当鼠标或其他设备选中结果某一项记录时,在List框下面展示出细节。

3) 修改其中的内容后,结果联动更新到List框及数据库中。

想象以下这样一个东西如果在以前使用winform实现会是什么样子呢?

应该会写不少的方法、属性用于界面之间及界面与数据库之间的联动。

今天这个练习就先展示以下WPF的技术亮点之一:

DataBinding。在制作过程中,还会为大家不断接受一些控件、布局等相关知识和技巧,部分相关的知识内容与此练习关系不大的,我将会用浅灰色字体带过,对于熟悉这部分内容的读者可以直接跳过。

建立一个WPF项目

打开VS 2008 新建一个WPF应用程序

4. WPF做出的3D程序如何放到网页上

先得转换成图片或者FLASH啊,然后上传到网页服务器。如果不需要给别人看的话,那就直接上传,别人可以下载下来。用3D打开。

5. 请问wpf中下面这样应该怎么实现

修改button的Triggers 即可
<Style TargetType="Button">
<Setter Property="Background" Value="Black"/>
<Setter Property="Foreground" Value="White"/>
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Margin" Value="0 0 0 -10"></Setter>
<Setter Property="Background" Value="BlueViolet"></Setter>
</Trigger>
</Style.Triggers>
</Style>
前台:
<StackPanel Orientation="Horizontal">
<Button Width="80" Height='23' VerticalAlignment="Bottom" Content="aaa"/>
<Button Width="80" Height='23' VerticalAlignment="Bottom" Content="bbb"/>
<Button Width="80" Height='23' VerticalAlignment="Bottom" Content="ccc"/>
</StackPanel>
具体的样式还得楼主自己调了,我提供下思路^ ^.

6. WPF中如何实现多窗口通讯、传值

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
//第二个窗口的引用
Window2 w2 = null;

private void button1_Click(object sender, RoutedEventArgs e)
{
//是第一次就打开新的窗口
if (w2 == null)
{
w2 = new Window2(textBox1.Text);
w2.Show();
}
else
{
//不是第一次,就直接更新 窗口2的textbox
w2.UpData(this.textBox1.Text);
}
}

}

public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();

}
public Window2(string text)
{
InitializeComponent();
//设置text 的值
this.textBox1_inWindow_2.Text = text;
}

public void UpData(string str)
{
//设置text 的值
this.textBox1_inWindow_2.Text = str;
}
}

总结:
就是要第二个窗口提供一个方法,这个方法用来更新它的UI.第一个窗口去调用这个方法就可以了。

7. wpf项目,实现两台电脑间的网络通信,类似于简易版聊天软件。

-
实现两台计算机互相通信,要使用到 socket 编程,只要在创建套接字的时候绑定本机IP和端口,然后再通过对方计算机的ip就可以实现通信。
这里通信 设计到 使用UDP 还是 TCP 。
UDP是面向通信的,效率较高,但不安全。常用在局域网通信。
TCP是面向连接的,效率不高,安全,比较常用在广域网通信。

8. 如何用WPF实现一个最简单的Mvvm示例

创建一个 ViewModelBase

public abstract class ViewModelBase : INotifyPropertyChanged{
//属性改变事件
public event PropertyChangedEventHandler PropertyChanged;

//当属性改变的时候,调用该方法来发起一个消息,通知View中绑定了propertyName的元素做出调整
public void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}

2创建一个DelegateCommand

public class DelegateCommand : ICommand{
readonly Action<object> _execute;
readonly Predicate<object> _canExecute;

public DelegateCommand(Action<object> execute)
: this(execute, null)
{
}
public DelegateCommand(Action<object> execute, Predicate<object> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
public void Execute(object parameter)
{
_execute(parameter);
}
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}

3创建示例用 ViewModel
让 ViewModel 继承自 ViewModelBase。

public class MainWindowViewModel : ViewModelBase{
private string _input;
public string Input
{
get
{
return _input;
}
set
{
_input = value;
RaisePropertyChanged("Input");
}
}

private string _display;
public string Display
{
get
{
return _display;
}
set
{
_display = value;
RaisePropertyChanged("Display");
}
}

public DelegateCommand SetTextCommand { get; set; }

private void SetText(object obj)
{
Display = Input;
}
public MainWindowViewModel()
{
SetTextCommand = new DelegateCommand(new Action<object>(SetText));
}
}