WPF数据模板
Data Template 数据模板
x:Name 设置名字
Stackpanel 容器
<Grid>
<DataGrid x:Name="grid" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Code" Binding="{ Binding Code}" />
<DataGridTextColumn Header="Name"
Binding="{ Binding Name}" />
<DataGridTemplateColumn Header=" 操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="复制" />
<Button Content="删除" />
<Button Content="保存" />
</StackPanel>
<!--<StackPanel Orientation="Horizontal"> 由于只有一个元素存在所以注释掉了
<Border Width="10"
Height="10"
Background="{Binding Code}" />
<TextBlock Margin="10,0"
Text="{Binding Name}" />
</StackPanel>-->
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
namespace WPF项目实战
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Color> text = new List<Color>();
text.Add(new Color() { Code = "#DB7093", Name = "弱紫罗兰红" });
text.Add(new Color() { Code = "#FF69B4", Name = "热情的粉红" });
text.Add(new Color() { Code = "#FF1493", Name = "深粉红" });
text.Add(new Color() { Code = "#C71585", Name = "中紫罗兰红" });
grid.ItemsSource = text;
}
public class Color
{
public string Code { get; set; }
public string Name { get; set; }
}
}
}
WPF绑定
Slider 滑块
ElementName 与什么绑定
Path 指定控件的属性
Mode 模式选择
- onetime 保持最初的值 不更新
- oneway 绑定的它 它可改变我 我不可改变它
- onewayTosource 我可改变他 它改变不了我
<Grid>
<StackPanel>
<Slider x:Name="slider"
Margin="5" />
<TextBlock
Text="{Binding ElementName=slider,Path=Value, Mode=OneTime}"
Margin="5"
Height="30" />
<TextBlock Text="{Binding ElementName=slider,Path=Value,Mode=OneWay}"
Margin="5"
Height="30" />
<TextBlock Text="{Binding ElementName=slider,Path=Value,Mode=OneWayToSource}"
Margin="5"
Height="30" />
</StackPanel>
</Grid>
在类里创建新属性,然后new一个一样可以绑定
public partial class MainWindow : Window
{
public class Class1
{
public string Name { get; set; }
}
public MainWindow()
{
InitializeComponent();
this.DataContext = new Class1()
{
Name = "蒙"
};
}
}
<TextBlock
Text="{Binding Name}"
Margin="5"
Height="30" />
WPF命令
- ICommand :包含了两个两个接口一个事件
- void Execute 执行某个动作
- bool CanExecute 能不能执行某个动作
- EventHandler 状态发生变化事件将会被响应
- 具体的业务代码写在一个类里 具体的Ui行为绑定写在Ui里
ui绑定
<Grid>
<Button Command="{Binding ShowCommand}" />
</Grid>
委托的生成
Icommand接口的实现
namespace WPF项目实战
{
public class Mycommad : ICommand
{
Action max;
public Mycommad(Action action)
{
max = action;
}
public event EventHandler CanExecuteChanged;
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
max();
}
}
}
业务代码
public class MainViewMode1
{
public MainViewMode1()
{
ShowCommand = new Mycommad(Show);
}
public Mycommad ShowCommand { get; set; }
public void Show()
{
MessageBox.Show("点击了按钮!");
}
}