Use Data Triggers to Change the Appearance of Bound Data : Binding « Windows Presentation Foundation « VB.Net

Home
VB.Net
1.2D
2.Application
3.Class
4.Data Structure
5.Data Types
6.Database ADO.net
7.Development
8.Event
9.File Directory
10.Generics
11.GUI
12.Language Basics
13.LINQ
14.Network Remote
15.Security
16.Thread
17.Windows Presentation Foundation
18.Windows System
19.XML
20.XML LINQ
VB.Net Tutorial
VB.Net by API
VB.Net » Windows Presentation Foundation » BindingScreenshots 
Use Data Triggers to Change the Appearance of Bound Data
Use Data Triggers to Change the Appearance of Bound Data
      
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:WpfApplication1="clr-namespace:WpfApplication1"
    x:Name="thisWindow" Title="WPF" Height="240" Width="280">

    <Window.Resources>
        <WpfApplication1:DataItems x:Key="dataItems"/>
        <WpfApplication1:AmountToHeightConverter x:Key="amountToHeightConverter" />
        <DataTemplate x:Key="dataItemtemplate">
            <Rectangle x:Name="rectangle" Width="30"
                VerticalAlignment="Bottom"
                Fill="Green"
                Height="{Binding Path=Amount,Converter={StaticResource amountToHeightConverter}}"/>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=IsPositive}" Value="False">
                    <Setter TargetName="rectangle" Property="Fill" Value="Red"/>
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </Window.Resources>
    <StackPanel>
        <ItemsControl ItemsSource="{Binding Source={StaticResource dataItems}}"
            ItemTemplate="{StaticResource dataItemtemplate}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>

        <Line Stroke="Black" StrokeThickness="2" X1="0" Y1="0" X2="0" Y2="{Binding ElementName=thisWindow, Path=ActualHeight}"/>
        <Line Stroke="Black" StrokeThickness="2" X1="0" Y1="0" X2="{Binding ElementName=thisWindow, Path=ActualWidth}" Y2="0"/>
    </StackPanel>
</Window>
//File:Window.xaml.vb
Imports System
Imports System.Windows.Data
Imports System.Globalization
Imports System.Collections.ObjectModel
Namespace WpfApplication1
  <ValueConversion(GetType(Double), GetType(Double))> _
  Public Class AmountToHeightConverter
    Implements IValueConverter
    Public Function Convert(value As [Object], targetType As Type, parameter As [Object], culture As CultureInfoAs [ObjectImplements IValueConverter.Convert
      Dim amount As Double = System.Convert.ToDouble(value)
      If amount < Then
        amount = 0
      End If

      Return amount
    End Function
    Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfoAs Object Implements IValueConverter.ConvertBack
      Throw New NotImplementedException()
    End Function
  End Class
  Public Class DataItem
    Public Property Amount() As Double
      Get
        Return m_Amount
      End Get
      Set
        m_Amount = Value
      End Set
    End Property
    Private m_Amount As Double

    Public ReadOnly Property IsPositive() As Boolean
      Get
        Return Amount >= 0
      End Get
    End Property
  End Class

  Public Class DataItems
    Inherits Collection(Of DataItem)
    Public Sub New()
      Me.Add(New DataItem() With _
        .Amount = _
      })
      Me.Add(New DataItem() With _
        .Amount = _
      })
      Me.Add(New DataItem() With _
        .Amount = -_
      })
      Me.Add(New DataItem() With _
        .Amount = _
      })
      Me.Add(New DataItem() With _
        .Amount = -_
      })
      Me.Add(New DataItem() With _
        .Amount = -_
      })
    End Sub
  End Class
End Namespace

   
    
    
    
    
    
  
Related examples in the same category
1.Bind to a Property of a UI ElementBind to a Property of a UI Element
2.Bind a Property of an Element to ItselfBind a Property of an Element to Itself
3.Specify a Default Value for a BindingSpecify a Default Value for a Binding
4.Create a Two-Way BindingCreate a Two-Way Binding
5.Debug Bindings Using Attached PropertiesDebug Bindings Using Attached Properties
6.String Array ResourceString Array Resource
7.Bind animate target value to Canvas(Window) widthBind animate target value to Canvas(Window) width
8.Display Current Date and Time: binding the DateTime.Now to LabelDisplay Current Date and Time: binding the DateTime.Now to Label
9.One way and two way bindingOne way and two way binding
10.Custom Element Binding WindowCustom Element Binding Window
11.Get XmlElement from Bounded viewGet XmlElement from Bounded view
12.Customize UpdateSourceExceptionFilterCustomize UpdateSourceExceptionFilter
13.Assign your own class to DataContent and bind to TextBoxAssign your own class to DataContent and bind to TextBox
14.Async bindingAsync binding
15.Null property bindingNull property binding
16.Binding Property with ExceptionBinding Property with Exception
17.Hierarchical Binding for three level nested objectsHierarchical Binding for three level nested objects
18.BindingOperations.GetBindingExpressionBindingOperations.GetBindingExpression
19.Bind to enum typesBind to enum types
20.Bind to a MethodBind to a Method
21.Manual Update TargetManual Update Target
22.Bind to the Values of an EnumerationBind to the Values of an Enumeration
23.Master Detail BindingMaster Detail Binding
24.Data binding using collections composed of mixed types of data.Data binding using collections composed of mixed types of data.
25.Binding Environment InfoBinding Environment Info
26.Bind to an ADO.NETDataSetBind to an ADO.NETDataSet
27.Text Data BindingText Data Binding
28.Bind to an Existing Object InstanceBind to an Existing Object Instance
29.Digital ClockDigital Clock
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.