WPF笔记
使用笔记
Visual Studio 快捷键
注释:Ctrl + K, Ctrl + C
取消:Ctrl + K, Ctrl + U
整理代码:Ctrl + K, Ctrl + D
tips
- 使用d:的标签会在编辑时展示,但编译时忽略
控制台输出
using System.Diagnostics;
Trace.WriteLine();
学习笔记
使用C#代码编写界面的方法
现在基本不用
// 创建grid结构
var grid = (Grid)this.Content;
// 创建button对象
Button button = new Button();
button.Height = 50;
button.Width = 100;
Margin = new Thickness(0, 0, 0, 0);
button.Content = "Button !!!";
// 为grid添加button按钮
grid.Children.Add(button);
XAML形式
<Grid>
<Button>
<Button.Height>50</Button.Height>
<Button.Width>100</Button.Width>
<Button.Content>
<TextBlock>Click me 4</TextBlock>
</Button.Content>
</Button>
</Grid>
StackPanel & ListBox
<StackPanel>
<TextBlock HorizontalAlignment="Center" Margin="20">Hello World</TextBlock>
<ListBox Height="100" Width="100">
<ListBoxItem Content="item 1"></ListBoxItem>
<ListBoxItem Content="item 2"></ListBoxItem>
<ListBoxItem Content="item 3"></ListBoxItem>
<ListBoxItem Content="item 4"></ListBoxItem>
</ListBox>
<Button Margin="20" Width="100" Click="Button_Click">随便</Button>
</StackPanel>
逻辑树 & 视觉树
WPF Visualizer
逻辑树是视觉树的子集
Grid网格系统
Width可选的参数:auto * 2* 3*
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Button Grid.Row="0" Grid.Column="0">Click me 1</Button>
<Button Grid.Row="0" Grid.Column="1">Click me 2</Button>
<Button Grid.Row="1" Grid.Column="0">Click me 3</Button>
<Button Grid.Row="1" Grid.Column="1">Click me 4</Button>
<TextBlock Grid.Row="2" Grid.Column="0">Hello World</TextBlock>
</Grid>
属性依赖与数据处理
<Grid>
<Button Height="100" Width="200" Content="ClickMe">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="FontSize" Value="25"></Setter>
<Setter Property="Foreground" Value="White"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
Data Binding 数据绑定
- 单向绑定 one way bining : Source -> Target
- 双向绑定 two way bining : Source <-> Target
- 指定方向绑定 oneWayToSource -> bining source
- 单次绑定 One Time -> 构造方法中单次执行
<StackPanel>
<TextBox Name="myTextBox" Width="100" Margin="50" Text="{Binding ElementName=mySlider, Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Slider Name="mySlider" Minimum="0" Maximum="100" IsSnapToTickEnabled="True"></Slider>
</StackPanel>