C# wpf介面設計基本知識
選單的生成
<Grid>
<Menu Height="23" Name="menu1" Width="200" HorizontalAlignment ="Left" >
<MenuItem Header =" 檔案"> //一級選單
<MenuItem Header =" 開啟"> //二級選單
<MenuItem Header =" cpp">//三級選單
</MenuItem>
</MenuItem>
<MenuItem Header =" 退出">
</MenuItem>
</MenuItem
<MenuItem Header =" 編輯">//一級選單
<MenuItem Header =" 複製">//二級選單
</MenuItem>
</MenuItem>
</Menu>
</Grid>
另外一層
<Grid>
<Button>
</Button>
</Grid>
顯示一般都在DockPanel裡面操作
<DockPanel>
<Menu DockPanel.Dock ="Top">
</Menu>
<TextBox DockPanel.Dock
</TextBox>
</DockPanel>
工具欄
<ToolBar DockPanel.Dock =" Top">
<Button Content =" 儲存">
</Button>
<Button Content =" 儲存新建">
//工具欄使用圖示
<Button>
<Button.Height >//屬性值賦值
23
</Button.Height>
<Button.Content>
<Image Source ="Images/01.bmp">
</Image>
</Button.Content>
</Button>
<TextBox>
</TextBox>
</ToolBar>
title 標題
resizemode 視窗大小
windowstartLocation = 視窗開始位置
windowstate 視窗預設大小
Margin 控制元件距離四周的值
bool? dialogresult //如果視窗是用showDialog開啟的,則給dialogresult會自動關閉視窗,並把dialogresult屬性的值通過showDialog的返回值返回。
萬用字元???
using sysyten.win32;
OpenFileDialog ofg;
ofg.ShowDialog()
ofg.filename 檔名
ofg.initialdirectory 設定檔案初始目錄
ofg.Filter = "文字檔案|*.txt|圖片|*.jpg;*.bmp"//同時顯示多個格式使用;
saveFiledialog sfg;
string picfilename = sfg.filename;
獲取圖片地址
image1.Source = new BitmapImage(new Uri(picfilename))//image1為另外一個顯示控制元件的名稱
focus()獲取焦點
繼承
class Animal
{
}
class Dog:Amnimal
{
}
Dog dog = new Dog(); //dog為一個物件
Animal al = dog;//al為一個變數
可以將一個子類的物件賦值給一個父類的變數。變數時一個標籤,物件是一個實際存在的東西。
Animal al= new Dog()
click事件
sender 都是object型別
Btton btn = (Btton)sender;
陣列 int[] nums = new int[3];
遍歷陣列 foreach(int i in nums)
{
}
集合類 泛型<int>
List<int> list = new List<int>();
list.Add();//新增資料
//和資料繫結有關??
list<Dog> list = new List<Dog>();
list.Add(new Dog());
控制元件的可見屬性。txt為控制元件名
txt.Visibility = System.Windows.Visibility.Collapsed;
Isenable //控制元件是否可用
Background //背景色 ctrl+j
textBox 的TextWrapping = "Wrap";換行屬性
maxlength 使用者輸入的長度不超過n個字元
passwordBox 密碼控制元件
c#中含有可null和不可null的型別
在不可null型別後面加?就可以為null
RadioButton 單選按鈕
GroupName 組名
Datapicker 日期控制元件
DateTime? value = datapicker.selectedDate;
Datetime.Today //當前日期
DataTime.now//當前時間
Image 圖片控制元件
ProgressBar 進度條
value 當前值
Isindaterminate 不確定模式
佈局
grid佈局
<grid>
<grid.columnDefinition>
<columnDefinition></ColumnDefinition>//要幾列寫幾條
</grid.columnDefinition>
<grid.rowDefinitions>
<rowDefinition></rowDefinition>//要幾行寫幾條
</grid.rowDefinitions>
<button grid.row = "1" grid.column ="1"></button>//要修改控制元件的顯示位置,使用grid修改行和列,行數和列數是使用grid.columnSpan = "2",grid .rowSpan = "2"
//grid 屬於附加的屬性,不是行列包含的屬性
</grid>
horizontalAlignment 橫向位置
VerticalAlignment 縱向位置
stackpanel佈局
orientation 排布方式 縱向排列 橫向排列
從上往下佈局
//這裡只能新增一個屬性值,要新增多個要用StackPanel將多個屬性值打包起來
<stackPanel>
新增多條東西
例如 新增圖片。。
<Image source = "地址"></Image>
</stackpanel>
</ button.content >
動態新增控制元件
一般在load時載入
Button btn = new Button();
btn.content = "xxx";
grid.setrow(btn,i);//修改btn的行
容器名。children.add(btn);
//動態新增行
columnDefinition coldef = new columnDefinition();
容器名.columnDefinitions.Add(coldef)
//隨機數生成類
Random random =new random();
random.Next(min,max);x>=min x<max
佈局的巢狀
<grid>
<grid.columnDefinition>
<columnDefinition></ColumnDefinition>//要幾列寫幾條
</grid.columnDefinition>
<grid.rowDefinitions>
<rowDefinition></rowDefinition>//要幾行寫幾條
</grid.rowDefinitions>
巢狀佈局
<stankpanel>
</stankpanel>
<grid>
</grid>
</grid>