上善若水

水善利万物而不争
随笔 - 175, 文章 - 0, 评论 - 10, 阅读 - 14万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

WPF | 跟着视频敲代码6 | 绑定 Binding

Posted on   董锡振  阅读(38)  评论(0编辑  收藏  举报

https://www.bilibili.com/video/BV1nY411a7T8?p=6

笔记(控件与控件之间建立绑定关系而非通过事件来驱动):

复制代码
<Window.Resources>
        <Style  TargetType="TextBox">
            <Setter Property="Height" Value="20"></Setter>
            <Setter Property="Margin" Value="5,0"></Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <StackPanel>
            <Slider   x:Name="sl1"    Minimum="0" Maximum="100"   ></Slider>
            <TextBox  x:Name="tx1"    Text="{Binding ElementName=sl1,Path=Value,Mode=Default}" ></TextBox> <!--Mode默认是双向绑定-->
            <TextBox  x:Name="tx2"    Text="{Binding ElementName=sl1,Path=Value,Mode=OneTime}" ></TextBox>
            <TextBox  x:Name="tx3"    Text="{Binding ElementName=sl1,Path=Value,Mode=OneWay}" ></TextBox>
            <TextBox  x:Name="tx4"    Text="{Binding ElementName=sl1,Path=Value,Mode=OneWayToSource}" ></TextBox>
            <TextBox  x:Name="tx5"    Text="{Binding ElementName=sl1,Path=Value,Mode=TwoWay}" ></TextBox> 
        </StackPanel>
    </Grid>
复制代码

 

原始(控件与控件之间建立绑定关系通过事件来驱动):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public partial class Demo6 : Window
   {
       public Demo6()
       {
           InitializeComponent();
       }
       /// <summary>
       /// Slider 滑动 三个输入框显示对应数值
       /// </summary>
       /// <param name="sender"></param>
       /// <param name="e"></param>
       private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
       {
           this.tx1.Text = sl1.Value.ToString();
           this.tx2.Text = sl1.Value.ToString();
           this.tx3.Text = sl1.Value.ToString();
       }
 
       /// <summary>
       /// 修改第一个输入框文本值 Slider跟着联动
       /// </summary>
       /// <param name="sender"></param>
       /// <param name="e"></param>
       private void tx1_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
       {
           double v = 0;
           double.TryParse(tx1.Text, out v);
           sl1.Value = v;
       }
   }

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Window.Resources>
        <Style  TargetType="TextBox">
            <Setter Property="Height" Value="20"></Setter>
            <Setter Property="Margin" Value="5,0"></Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <StackPanel>
            <Slider   x:Name="sl1"  Minimum="0" Maximum="100" ValueChanged="Slider_ValueChanged"></Slider>
            <TextBox  x:Name="tx1"  TextChanged="tx1_TextChanged"></TextBox>
            <TextBox  x:Name="tx2"></TextBox>
            <TextBox  x:Name="tx3"></TextBox>
        </StackPanel>
    </Grid>

  

 

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示