當前位置:首頁 » 文件傳輸 » 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));
}
}