實現將TextBox字體大小綁定到Slider的Value屬性弧可,代碼查詢綁定關系亚享。
實現使用代碼創(chuàng)建綁定鸦致,解除綁定關系
XAML UI代碼如下:
<Grid>
? ? ? ? <StackPanel Margin="5">
? ? ? ? ? ? <Slider x:Name="sliderFontSize" Margin="5" Minimum="1" Maximum="40" Value="10" TickPlacement="TopLeft" TickFrequency="1"></Slider>
? ? ? ? ? ? <TextBlock x:Name="txtSample" Margin="10" FontSize="{Binding ElementName=sliderFontSize,Path=Value,Mode=TwoWay}">測試綁定</TextBlock>
? ? ? ? ? ? <WrapPanel >
? ? ? ? ? ? ? ? <Button Margin="20" x:Name="btnSetLarge" Click="btnSetLarge_Click">Large</Button>
? ? ? ? ? ? ? ? <Button Margin="20" x:Name="btnSetMiddle" Click="btnSetMiddle_Click">Middle</Button>
? ? ? ? ? ? ? ? <Button Margin="20" x:Name="btnSetSmall" Click="btnSetSmall_Click">Small</Button>
? ? ? ? ? ? ? ? <Button Margin="20" x:Name="btnGetBindingRelate" Click="btnGetBindingRelate_Click">查詢綁定關系方式1</Button>
? ? ? ? ? ? ? ? <Button Margin="20" x:Name="btnGetBindingRelate2" Click="btnGetBindingRelate2_Click">查詢綁定關系方式2</Button>
? ? ? ? ? ? </WrapPanel>
? ? ? ? ? ? <GroupBox Header="使用代碼創(chuàng)建綁定" Margin="10">
? ? ? ? ? ? ? ? <StackPanel Margin="5">
? ? ? ? ? ? ? ? ? ? <Slider x:Name="slider2" Margin="5" Minimum="1" Maximum="40" Value="10" TickPlacement="Both" TickFrequency="1"></Slider>
? ? ? ? ? ? ? ? ? ? <TextBox x:Name="txtSample2" Margin="10">使用代碼創(chuàng)建綁定</TextBox>
? ? ? ? ? ? ? ? ? ? <Button x:Name="btnCreateBinding" Click="btnCreateBinding_Click" Margin="5">創(chuàng)建綁定</Button>
? ? ? ? ? ? ? ? ? ? <Button x:Name="btnCleanBinding" Click="btnCleanBinding_Click" Margin="5">解除綁定</Button>
? ? ? ? ? ? ? ? </StackPanel>
? ? ? ? ? ? </GroupBox>
? ? ? ? </StackPanel>
? ? </Grid>
后臺代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp1
{
? ? /// <summary>
? ? /// MainWindow.xaml 的交互邏輯
? ? /// </summary>
? ? public partial class MainWindow : Window
? ? {
? ? ? ? public MainWindow()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? }
? ? ? ? private void btnSetLarge_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? txtSample.FontSize = 35;
? ? ? ? }
? ? ? ? private void btnSetMiddle_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? txtSample.FontSize = 15;
? ? ? ? }
? ? ? ? private void btnSetSmall_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? txtSample.FontSize = 5;
? ? ? ? }
? ? ? ? private void btnGetBindingRelate_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? Binding binding = BindingOperations.GetBinding(txtSample, TextBox.FontSizeProperty);
? ? ? ? ? ? if (binding != null)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? string info = $"綁定元素名稱:{binding.ElementName}\r\n綁定值:{binding.Path.Path}\r\n綁定模式:{binding.Mode}";
? ? ? ? ? ? ? ? MessageBox.Show(info);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? private void btnGetBindingRelate2_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? BindingExpression expression=BindingOperations.GetBindingExpression(txtSample, TextBox.FontSizeProperty);
? ? ? ? ? ? //獲取綁定源元素
? ? ? ? ? ? Slider bindSource = (Slider)expression.ResolvedSource;
? ? ? ? ? ? var bindData = bindSource.FontSize;
? ? ? ? ? ? var bindvalue = bindSource.Value;
? ? ? ? ? ? string info = $"綁定數據源:{bindSource.Name}\r\n綁定值:{bindSource.Value}";
? ? ? ? ? ? MessageBox.Show(info);
? ? ? ? }
? ? ? ? // 使用代碼創(chuàng)建綁定
? ? ? ? private void btnCreateBinding_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? Binding binding= new Binding();
? ? ? ? ? ? binding.Source = slider2;
? ? ? ? ? ? binding.Path = new PropertyPath("Value");
? ? ? ? ? ? binding.Mode=BindingMode.TwoWay;
? ? ? ? ? ? txtSample2.SetBinding(TextBox.FontSizeProperty, binding);
? ? ? ? }
? ? ? ? private void btnCleanBinding_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? BindingOperations.ClearAllBindings(txtSample2);
? ? ? ? }
? ? }
}