WPF数据Binding小结
为便于描述,假设当前窗体为Shell.xaml,其DataContent绑定的是ShellViewModel;
public partial class Shell : Window
{
CollectionView view = null;
public Shell()
{
InitializeComponent();
DataContext = new ShellViewModel();
}
}
参考1:ViewModel作为另一个ViewMode的属性
<TextBox Text="{Binding CateCombinVM.CategoryCombinEdit.Name}" />
其中:
- CateCombinVM务必作为ShellViewModel的ViewModel属性)。
- CategoryCombinEdit是CateCombinVM类中的一个绑定属性对象(“有一个”的用法)
- Name为CategoryCombinEdit实例对象一个类属性
参考2:Triggers与绑定
<ListView Grid.Row="1" x:Name="lv1" AlternationCount="2" ItemsSource="{Binding SourceItems}">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="#fbfbfb"/>
<Style.Triggers>
<Trigger Property="ListBox.AlternationIndex" Value="1">
<Setter Property="Background" Value="#ffffff"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Border x:Name="back" Height="20">
<TextBlock Text="{Binding Name}" />
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
参考3:常用绑定样式
<!--绑定到DataContext-->
<Button Content="{Binding DataTime}"/>
<!--绑定到DataContext,并设置绑定模式-->
<Button x:Name="btn" Content="{Binding DataTime,Mode=OneTime}"/>
<!--绑定到DataContext,并设置更新模式-->
<Button Content="{Binding DataTime,UpdateSourceTrigger=PropertyChanged}"/>
<!--绑定到DataContext,并设置转换模式-->
<Button Content="{Binding DataTime,Converter={StaticResource ConvertResource},ConverterParameter=btn1}"/>
<!--绑定到Element中指定属性-->
<Button Content="{Binding ElementName=btn,Path=Content}"/>
<!--绑定到相对位置中的自身模式-->
<Button Content="{Binding RelativeSource={RelativeSource Mode=Self},Path=Tag}" Tag="MyTag"/>
<!--绑定到相对位置中的父级别查找模式-->
<Button Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window},Path=Content}"/>
<!--绑定到相对位置中的父级别查找模式 绑定到指定类型-->
<Button Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window},Path=Content}"/>
<!--绑定到相对位置中的父级别查找模式 绑定到指定层级-->
<Button Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorLevel=2},Path=Content}"/>
<!--绑定到相对位置中的父级别查找模式 绑定到模板内容-->
<Button Content="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=Content}"/>
参考4:ToolTip中自动换行绑定
<Style TargetType="ToolTip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="2" BorderBrush="Linen">
<TextBlock TextWrapping="Wrap" Width="300" Foreground="Red"
Text="{TemplateBinding ContentControl.Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
参考5:包装数据源为 CollectionViewSource
<!--包装数据源为 CollectionViewSource-->
<CollectionViewSource x:Key="fileListView" Source="{Binding StockFiles}">
<CollectionViewSource.SortDescriptions>
<sd:SortDescription PropertyName="FDate" Direction="Descending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>