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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值