Wpf中双向绑定处理需要两处
实例1:
1.前台Xaml中属性Binding 时Model指定 TwoWay
<Grid> <Ellipse x:Name="ellipse" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="{Binding Path=Number,Mode=TwoWay}" Margin="50,55,0,0" Stroke="Black" VerticalAlignment="Top" Width="{Binding Path=Number,Mode=TwoWay}"/> <Slider x:Name="slider" Margin="28,167,22,0" ValueChanged="slider_ValueChanged" VerticalAlignment="Top" TickPlacement="Both" Maximum="100" SmallChange="1"/> <Label x:Name="label" Content="{Binding Path=Number,Mode=TwoWay}" HorizontalAlignment="Left" Margin="110,150,0,0" VerticalAlignment="Top"/> </Grid>
2.后台绑定的数据上线文实现INotifyPropertyChanged(向客户端发出某一属性值已更改的通知。)接口
/// <summary> /// Thread6.xaml 的交互逻辑 /// </summary> public partial class Thread6 : Window { TestData testData = new TestData() { Number = 10 }; public Thread6() { InitializeComponent(); //创建双向绑定 ellipse.DataContext = testData; label.DataContext = testData; } private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { testData.Number = (int)e.NewValue; } }
public class TestData : INotifyPropertyChanged { private int _Number; public int Number { get { return _Number; } set { _Number = value; if (this.PropertyChanged != null) { this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Number")); } } } public event PropertyChangedEventHandler PropertyChanged; }
显示结果:
实例2:使用Wpf的双向绑定机制,可以实现多线程修改UI
注:其他线程修改绑定数据时会通知到UI线程修改界面数据。
TestData类定义同上
Xaml定义同上
/创建双向绑定 ellipse.DataContext = testData; //创建线程修改数据 Task.Run(() => { while (true) { testData.Number++; if (testData.Number == 200) testData.Number = 0; Thread.Sleep(100); } });
标签:
WPF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!