WPF 元素綁定測試

實現將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);

? ? ? ? }

? ? }

}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末企孩,一起剝皮案震驚了整個濱河市裆泳,隨后出現的幾起案子,更是在濱河造成了極大的恐慌柠硕,老刑警劉巖工禾,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異蝗柔,居然都是意外死亡闻葵,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門癣丧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來槽畔,“玉大人,你說我怎么就攤上這事胁编∠峋” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵嬉橙,是天一觀的道長早直。 經常有香客問我,道長市框,這世上最難降的妖魔是什么霞扬? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上喻圃,老公的妹妹穿的比我還像新娘萤彩。我一直安慰自己,他們只是感情好斧拍,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布雀扶。 她就那樣靜靜地躺著,像睡著了一般肆汹。 火紅的嫁衣襯著肌膚如雪愚墓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天县踢,我揣著相機與錄音转绷,去河邊找鬼。 笑死硼啤,一個胖子當著我的面吹牛议经,可吹牛的內容都是我干的。 我是一名探鬼主播谴返,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼煞肾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嗓袱?” 一聲冷哼從身側響起籍救,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渠抹,沒想到半個月后蝙昙,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡梧却,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年奇颠,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片放航。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡烈拒,死狀恐怖,靈堂內的尸體忽然破棺而出广鳍,到底是詐尸還是另有隱情荆几,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布赊时,位于F島的核電站吨铸,受9級特大地震影響,放射性物質發(fā)生泄漏蛋叼。R本人自食惡果不足惜焊傅,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一剂陡、第九天 我趴在偏房一處隱蔽的房頂上張望狈涮。 院中可真熱鬧狐胎,春花似錦、人聲如沸歌馍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽松却。三九已至暴浦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晓锻,已是汗流浹背歌焦。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砚哆,地道東北人独撇。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像躁锁,于是被迫代替她去往敵國和親纷铣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容