精华内容
下载资源
问答
  • wpf 模板绑定控件属性

    2019-05-15 18:01:00
    我们在ControlTemplate中画了椭圆,应用于Button按钮,但我们Button中有的Content属性,却没有显示出来。因为这里用...通过ContentControl中的Content来绑定父容器的Content属性。 <Style TargetT...

    我们在ControlTemplate中画了椭圆,应用于Button按钮,但我们Button中有的Content属性,却没有显示出来。因为这里用ControlTemplate重写了Button的样式,所以我们也要在ControlTemplate中增加ContentControl。通过ContentControl中的Content来绑定父容器的Content属性。

    <Style TargetType="Button">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Grid>
                                <Ellipse Width="120" Height="100">
                                    <Ellipse.Fill>
                                        <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                            <GradientStop Offset="0" Color="blue"/>
                                            <GradientStop Offset="1" Color="LightBlue"/>
                                        </LinearGradientBrush>
                                    </Ellipse.Fill>
                                </Ellipse>
                                <ContentControl VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Content}"/>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

    转载于:https://www.cnblogs.com/sky-jyq/p/10871120.html

    展开全文
  • Binding对象的属性 Property Description Converter 转换器 ElementName 绑定的源对象 FallbackValue 绑定无法返回有效值时的默认显示。 Mode 绑定方式 Path 属性



      Binding对象的属性

    Property

    Description

    Converter

    转换器

    ElementName

    绑定的源对象

    FallbackValue

    绑定无法返回有效值时的默认显示。

    Mode

    绑定方式

    Path

    属性

    RelativeSource

    常用于自身绑定或者数据模板中来指定绑定的源对象。

    Source

    源对象

    StringFormat

    格式化表达式

    UpdateSourceTrigger

    Sets the events on which binding will occur.

    ValidationRules

    验证规则

     

    <Window
    	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    	x:Class="UntitledProject2.Window1"
    	x:Name="Window"
    	Title="Window1"
    	Width="640" Height="480">
    
    	<Grid x:Name="LayoutRoot">
    		<Label HorizontalAlignment="Left" Margin="36,34,0,0" VerticalAlignment="Top" Width="106" Height="33" Content="Color"/>
    		<ListBox HorizontalAlignment="Left" Margin="85,67,0,0" VerticalAlignment="Top" Width="151" Height="90" IsSynchronizedWithCurrentItem="True" x:Name="lbColor">
    			<ListBoxItem x:Name="red" Content="Red"/>
    			<ListBoxItem x:Name="green" Content="Green"/>
    			<ListBoxItem x:Name="blue" Content="Blue"/>
    		</ListBox>
    		<Label HorizontalAlignment="Left" Margin="36,183,0,221" Width="156" Content="You select color:"/>
    		<TextBlock Margin="85,0,292,145" VerticalAlignment="Bottom" Height="62" Text = "{Binding ElementName = lbColor,Path=SelectedItem.Content,Mode=OneWay}" TextWrapping="Wrap"/>
    	</Grid>
    </Window>


    运行效果



    加上一句话,改变TextBlock的背景颜色

    Background="{Binding ElementName=lbColor,Path=SelectedItem.Content,Mode=OneWay}" 


    运行效果:



    xml文件绑定:

    首先编写一个xml文件eg.xml

    <?xml version="1.0" ?>
    <!-- File Name: eg.xml -->
    <colors xmlns="">
    	<color name = "pink"   ID ="1" />
    	<color name = "white"  ID ="2" />
    	<color name = "black"  ID ="3" />
    	<color name = "yellow" ID ="4"/>
    	<color name = "blue"   ID ="5"/>
    	<color name = "red"    ID ="6"/>
    	<color name = "brown"  ID ="7"/>
    	<color name = "purple"  ID ="8"/>
    	<color name = "green"  ID ="9"/>
    </colors>

    xaml代入如下:

    <Window
    	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    	x:Class="UntitledProject4.Window1"
    	x:Name="Window"
    	Title="Window1"
    	Width="640" Height="480">
    
      <Window.Resources>
        <XmlDataProvider x:Key="colorbox" Source="eg.xml" XPath="colors" />
      </Window.Resources>
      
      
    	<Grid x:Name="LayoutRoot">
    		<ListBox Margin="81,78,274,173" ItemsSource="{Binding Source={StaticResource colorbox},XPath=color/@name}"  IsSynchronizedWithCurrentItem="True" x:Name="cb" SelectionChanged="cb_SelectionChanged"/>
    		<TextBox Margin="81,0,274,84" VerticalAlignment="Bottom" Height="40" Text="{Binding ElementName=cb,Path=SelectedItem.Content,Mode=OneWay}" TextWrapping="Wrap" x:Name="result"/>
    	</Grid>
    </Window>



    这里只是把xml文件里的colors/color/name绑定到listbox里,要想在textblock里显示颜色,那么需要添加一个listbox的触发事件selectionchanged,代码如下:

            private void cb_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                string s1 = cb.SelectedValue.ToString();
                result.Text = s1;
                Color c1 = (Color)ColorConverter.ConvertFromString(s1); //string to  color
                Brush b1 = new SolidColorBrush(c1);                     //color  to  brush 
                result.Background = b1;
            }

    然后运行结果如下:






    展开全文
  • WPF 简单数据绑定实例

    千次阅读 2017-04-14 11:05:35
    创建一个WPF窗体,加一个TextBox和...但是在WPF中,控件刷新完全由数据驱动,使用数据绑定,当数据变化时自动更新控件。在大量的数据和剧烈的变化中,这种数据驱动的方式更加有优势。 代码实现如下://创建一个Stude

    创建一个WPF窗体,加一个TextBox和Button控件,控件button用于控制数据更改,TextBox用于显示更改后的数据,这项数据对于WinForm来说是很容易实现的,用控件点击事件对另一个控件访问,控制控件的刷新。但是在WPF中,控件刷新完全由数据驱动,使用数据绑定,当数据变化时自动更新控件。在大量的数据和剧烈的变化中,这种数据驱动的方式更加有优势。
    代码实现如下:

    //创建一个Student类,需要继承INotifyPropetyChanged接口
    public class Student : INotifyPropertyChanged
        {
            //构造函数
            public Student(string name,int age)
            {
                this.age = age;
                this.name = name;
            }
            private string name;
            private int age;
    
            public event PropertyChangedEventHandler PropertyChanged;
    
            public int getAge
            {
                get { return age; }
                set {
                    age = value;
                    if (PropertyChanged != null)
                    {
                        //给getAge赋值时触发事件
                       this.PropertyChanged.Invoke(this,new PropertyChangedEventArgs("getAge"));
                    }
                }
            }
        }

    窗体设计器代码很简单,如下代码:

    <Window x:Class="WPFtest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WPFtest"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="91*"/>
                <RowDefinition Height="93*"/>
                <RowDefinition Height="136*"/>
            </Grid.RowDefinitions>
            <TextBox x:Name="tbx" HorizontalAlignment="Left" Height="43" Margin="128,26,0,0" Grid.Row="1" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="269"/>
            <Button x:Name="btn" Content="ClickMe" HorizontalAlignment="Left" Margin="208,54,0,0" Grid.Row="2" VerticalAlignment="Top" Width="75" Click="btn_Click"/>
    
        </Grid>
    </Window>
    

    下面是逻辑代码:

     public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                //新建绑定类,引用为System.Windows.Data
                Binding newbind = new Binding();
                //绑定源为Student的实例stu1
                newbind.Source = stu1;
                //绑定属性为"getAge"
                newbind.Path = new PropertyPath("getAge");
                //设置绑定TextBox控件,显示在TextProperty中
                //TextBox是System.Windows.Controls中的,不是System.Windows.Forms中的,需要注意
                tbx.SetBinding(TextBox.TextProperty,newbind);
            }
            //新建实例
            public Student stu1 = new Student("123",16);
            private void btn_Click(object sender, RoutedEventArgs e)
            {
                //自加1
                stu1.getAge += 1;
            }
        }

    实现效果如下:
    这里写图片描述
    这里写图片描述

    至此,实例已完成。

    展开全文
  • 简介:1.WPF绑定使用的源属性必须是依赖项属性,这是因为依赖项属性具有内置的更改通知支持,元素绑定表达式使用了Xaml扩展标记, WPF绑定一个控件是使用Binding.ElementName, 绑定非控件对象时使用Source,...

    简介:
    1.WPF绑定使用的源属性必须是依赖项属性,这是因为依赖项属性具有内置的更改通知支持,元素绑定表达式使用了Xaml扩展标记,

    WPF绑定一个控件是使用Binding.ElementName,

    绑定非控件对象时使用Source,RelativeSource,DataContext属性(WPF特有,而非XAML),只能绑定对象的公有字段.
    下边是部分Binding 属性名,完整列表参考 :http://msdn.microsoft.com/zh-cn/library/vstudio/ms750413.aspx

    ① Source:数据提供者
    ② RelativeSource:根据当前对象为基础,自动查找源并绑定
    ③ DataContext:如果未使用Source和RelativeSource,WPF就从当前控件开始在控件树种向上查找,并使用第一个非空的DataContext属性,可以在更高层次容器对象上设置DataContext,如下代码 Text 绑定到 Source属性,但未设置Text的绑定对象,会向上查找DataContext绑定的对象的Source属性

    实例:

    <Grid>
        <StackPanel DataContext="{x:Static SystemFonts.IconFontFamily}">
            <TextBox  Margin="5" Text="{Binding Path=Source,Mode=OneWay}">
            </TextBox>
        </StackPanel>
        <ComboBox x:Name="lstColors"   Margin="3,43,189,196">
            <ComboBoxItem Content="Red" HorizontalAlignment="Left" Width="224"/>
            <ComboBoxItem Content="Green" HorizontalAlignment="Left" Width="224"/>
            <ComboBoxItem Content="Blue" HorizontalAlignment="Left" Width="224"/>
        </ComboBox>
        <TextBlock Margin="3,117,3,3"  x:Name="lblSampleText"
                    Text="{Binding ElementName=lstColors,Path=SelectedItem.Content}"
                Background="{Binding ElementName=lstColors,Path=SelectedItem.Content}" >
        </TextBlock>
    </Grid>

    实例2,使用代码实现绑定:

    //使用代码创建绑定
    Binding binding = new Binding();
    binding.Source = System.Diagnostics.Process.GetCurrentProcess();
    binding.Path = new PropertyPath("ProcessName");
    binding.Mode = BindingMode.OneWay;
    txtOne.SetBinding(TextBlock.TextProperty,binding);
    //Path中使用"."标识当前数据源
    Binding binding2 = new Binding();
    binding2.Source = SystemColors.ActiveBorderBrush;
    binding2.Path = new PropertyPath(".");
    txtOne.SetBinding(TextBlock.BackgroundProperty, binding2);

    2.BindingMode的枚举值有:
    ① OneWay
    ② TwoWay
    ③ OneTime:根据源端属性值设置目标属性值,之后的改变会被忽略,除非调用BindingExpression.UpdateTarge方法
    ④ OneWayToSource:与OneWay类似,但方向相反,用于目标属性是非依赖项属性的情况
    ⑤ Default:默认值,根据目标属性确定绑定类型.依赖项属性都由一个元数据 FrameworkPropertyMetadata.BindsTwoWayByDefault用于标识oneway绑定还是twoway绑定
    3.从目标到绑定源端数据更新时(binding mode为twoway或者onewaytosource),更新行为(什么时机更新)由Binding.UpdateSourceTrigger枚举属性控制,UpdateSourceTrigger的值有:
    ① PropertyChanged:目标属性发生变化时立即更新
    ② LostFocus:目标属性发生变化并且目标丢失焦点时更新源
    ③ Explicit:除非调用BindingExpression.UpdateSource()方法,否则无法更新
    ④ Default:根据目标属性的元数据(FrameworkPropertMetadata.DefaulUpdateSourceTrigger)确定更新行为,大多数属性默认行为是PropertyChanged

    4.WPF中派生自ItemsControl的类都能显示列表,能够支持集合数据绑定的元素包括ListBox,ComboBox,ListView和DataGrid,Menu,Treeview,ItemsControl中有三个重要属性:
    ① ItemsSource: 指向一个集合,结合必须支持IEnumerable接口,该集合包含将在列表中显示的所有元素,但基本的IEnumerable接口只支持只读绑定,要使修改能直接反应到绑定的控件上需要使用ObservablCollection类
    ② DisplayMemberPath:确定用于显示的 对象的属性,如果未设置 则会显示对象的ToString()方法返回的值
    ③ ItemTemplates:接受一个数据模板,用于为每个项创建可视化外观

     

    展开全文
  • WPF元素绑定

    2018-08-15 00:25:00
    原文:WPF元素绑定数据绑定简介:数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性。目标属性是依赖项属性。源对象可以是任何内容,从另一个WPF元素乃至ADO.NET数据对象(如...
  • WPF数据绑定

    2019-01-30 11:13:30
    WPF学习之数据绑定 WPF中的数据绑定提供了很强大的功能。与普通的WinForm程序相比,其...另外对于WPF中提供的数据模板功能,让我们可以轻松定制可以被复用的控制呈现的模块—但这是以数据绑定为前提来做到轻松易...
  • WPF 命令绑定的各种方式

    千次阅读 2020-01-21 09:24:08
    WPF 命令绑定的各种方式 引言 在WPF开发过程中,不得不学习的就是MVVM模式。但是在MVVM中又绕不开命令(Command)的使用。下面通过几种方式介绍我了解的WPF命令绑定方式。 如何使用 控件继承ICommand接口,直接...
  • 一、创建一个简单的Binding的简单程序 1.1.数据绑定概述 数据绑定为应用程序提供了一种简单、一致的数据表示和交互方法。...WPF中的数据绑定功能与传统模型相比具有一些优势,包括本质上支持数据绑定的各种属性、灵活
  • WPF 数据绑定

    2017-08-25 13:17:00
    WPF中的数据绑定提供了很强大的功能。与普通的WinForm程序相比,其绑定功能为我们提供了很多便利,例如Binding对象的自动通知/刷新,Converter,Validation Rules,Two Way Binding等功能,省去了很多维护的繁琐工作...
  • WPF数据绑定的学习

    2017-09-27 17:24:50
    WPF 中的数据绑定功能与传统模型相比具有一些优势,包括本质上支持数据绑定的各种属性、灵活的数据 UI 表示形式,以及业务逻辑与 UI 的完全分离。 数据绑定是在应用程序 UI 与业务逻辑之间建立连接的过程。 如果...
  • 可以使用此属性绑定源设置为一个对象的实例。 2.RelativeSource属性。可以使用此属性绑定源设置为相对于绑定目标位置的源。例如,你自己写了一个控件,这个控件有一个依赖项属性ItemSource,在这个控件中,你又...
  • WPF数据绑定详解

    千次阅读 2011-10-28 15:02:52
    Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互。元素可以以公共语言运行库 (CLR) 对象和 XML 的形式绑定到各种数据源的数据。ContentControl(如 ...
  • WPF 数据绑定(上)

    千次阅读 2013-08-26 23:57:59
    数据绑定功能的优势包括 ,包括本质上支持数据绑定的各种属性、灵活的数据 UI 表示形式,以及业务逻辑与 UI 的完全分离。 数据绑定: 数据绑定是应用程序UI与业务逻辑之间建立连接的一个过程。 使用数据绑定...
  • WPF数据绑定Binding(二)

    2013-11-27 15:59:00
    WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性绑定(拷贝)到目标对象Destination的某个属性上。源属性可以是任意类型,但目标属性必须是...
  • MSDN里如是说:通常,如果有多个 DataTemplate 可用于同一类型的对象,并且您希望根据每个数据对象的属性提供自己的逻辑来选择要应用的 DataTemplate,则应创建 DataTemplateSelector。请注意,如果具有不同类型的...
  • (读完此系列WPF和Silverlight的数据绑定问题你就轻松搞定) 1 Binding to List Data 前面都是绑定到一个对象,下面我们学习绑定到对象列表的方法。 我们还是先组织要绑定的数据,对象所对应的类还是Person,但...
  • 上面实例代码展示如何将tabitem中的字段绑定到menuitem上,先通过TemplateBinding获取属性值赋值到DataContext属性,然后再通过指定的控件类型和第几个来绑定 IsEnabled="{Binding RelativeSource={RelativeSource ...
  • WPF 中 数据绑定 ItemSource和 DataContext的不同点:(1)DataContext 一般是一个非集合性质的对象,而ItemSource 更期望数据源是 集合对象。(2)DataContext 是 FrameworkElement 类中定义的一个依赖属性...
  • Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互。元素可以以公共语言运行库 (CLR) 对象和 XML 的形式绑定到各种数据源的数据。ContentC
  • 认识WPF模板

    2016-12-01 11:30:58
    1.1WPF菜鸟看模板  前面的记录有提过,控件主要是算法和数据的载体。控件的算法主要体现在可以激发的事件、可以调用的方法、能进行的操作等方面;控件的数据体现为:控件能展示哪些数据。上面两方面终决定了控件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,437
精华内容 974
关键字:

wpf模板绑定实例属性