- <StackPanel>
- <TextBox Name="tb" Text="Введите текст" />
- <TextBlock Text="{Binding ElementName=tb, Path=Text}"/>
- </StackPanel>
* This source code was highlighted with Source Code Highlighter.
2. В виде тэгов XAML- <StackPanel>
- <TextBox Name="tb" Text="Введите текст" />
- <TextBlock>
- <TextBlock.Text>
- <Binding ElementName="tb" Path="Text"></Binding>
- </TextBlock.Text>
- </TextBlock>
- </StackPanel>
* This source code was highlighted with Source Code Highlighter.
- <StackPanel>
- <TextBlock>
- <TextBlock.Text>
- <Binding Path="Text">
- <Binding.Source>
- <TextBlock Text="Связывание текста из описанного источника"/>
- </Binding.Source>
- </Binding>
- </TextBlock.Text>
- </TextBlock>
- </StackPanel>
* This source code was highlighted with Source Code Highlighter.
4. Биндинг на себя или своего предка:- <StackPanel>
- <TextBlock Tag="Своё собственное свойство" Text="{Binding RelativeSource={RelativeSource Self}, Path=Tag}"/>
- </StackPanel>
* This source code was highlighted with Source Code Highlighter.
В данном примере привязка к своему свойству, поэтому
используется кострукция
RelativeSource={RelativeSource
Self}.
Еще пример, в котором источником выступает SelectedItem.Content
из
ComboBox
. Приемник - это фон кнопки, который меняется в зависимости
от выбора на: зеленый, синий или красный.
- <StackPanel Orientation="Horizontal">
- <Label Content="Выбирете цвет кнопки"/>
- <ComboBox Name="cmbColor" SelectedIndex="0">
- <ComboBoxItem>Green</ComboBoxItem>
- <ComboBoxItem>Blue</ComboBoxItem>
- <ComboBoxItem>Red</ComboBoxItem>
- </ComboBox>
- <Button Background="{Binding ElementName=cmbColor, Path=SelectedItem.Content}" Content="Кнопка"/>
- </StackPanel>
* This source code was highlighted with Source Code Highlighter.
IValueConverter
при
связыванииIValueConverter
содержит два метода,
которые должны быть определены:Binding.Mode
)
установлен в TwoWay
или
OneWayToSource
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows.Data;
- using System.Windows.Media;
- using System.Globalization;
-
- namespace WpfConverterTest
- {
- [ValueConversion(typeof(String), typeof(SolidColorBrush))]
- public class WordToColorConverter : IValueConverter
- {
- public object Convert(object value, Type targetType,
- object parameter, CultureInfo culture)
- {
- string boundWord = value as string;
- SolidColorBrush returnBrush = null;
-
- switch (boundWord)
- {
- case "красный":
- returnBrush = new SolidColorBrush(Colors.Red);
- break;
- case "синий":
- returnBrush = new SolidColorBrush(Colors.Blue);
- break;
- case "желтый":
- returnBrush = new SolidColorBrush(Colors.Yellow);
- break;
- case "зеленый":
- returnBrush = new SolidColorBrush(Colors.Green);
- break;
- default:
- returnBrush = new SolidColorBrush(Colors.Yellow);
- break;
- }
- return returnBrush;
- }
-
- public object ConvertBack(object value, Type targetType,
- object parameter, CultureInfo culture)
- {
- throw new Exception("Не могу конвертировать обратно");
- }
- }
- }
* This source code was highlighted with Source Code Highlighter.
Файл
XAML выглядит так:
- <Window x:Class="WpfConverterTest.Window1"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="clr-namespace:WpfConverterTest"
- Title="Window1" Height="300" Width="400">
- <Window.Resources>
- <local:WordToColorConverter x:Key="Сonverter1"/>
- </Window.Resources>
-
- <StackPanel Orientation="Vertical">
- <Label Content="Демо. Конвертер текста из списка в заливку"
- FontSize="14" FontWeight="Bold" />
- <StackPanel Orientation="Horizontal">
- <ComboBox Name="comboBox" SelectedIndex="0" Width="100">
- <ComboBoxItem>красный</ComboBoxItem>
- <ComboBoxItem>синий</ComboBoxItem>
- <ComboBoxItem>зеленый</ComboBoxItem>
- <ComboBoxItem>желтый</ComboBoxItem>
- </ComboBox>
- <Rectangle Width="62" Height="25" Margin="100,0,0,0"
- Fill="{Binding ElementName=comboBox, Path=SelectedItem.Content,
- Converter={StaticResource Сonverter1}}"
/> </StackPanel> </StackPanel> </Window> * This source code was highlighted with Source Code Highlighter.
Скачать исходный проект можно с сервиса народ
Также в конвертер можно передавать параметры.