c# – WPF自定义控件DependencyProperty不会数据绑定
发布时间:2020-12-16 01:42:50 所属栏目:百科 来源:网络整理
导读:我有一个非常简单的用户控件叫做SetSpeed: UserControl x:Class="AGWPFControls.SetSpeed" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" MinHeight="50" MinWidth="110" Ca
我有一个非常简单的用户控件叫做SetSpeed:
<UserControl x:Class="AGWPFControls.SetSpeed" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" MinHeight="50" MinWidth="110"> <Canvas> <Slider Name="sldSetSpeed" MinWidth="100" Canvas.Top="5" Canvas.Left="5" /> <TextBox Name="txtSpeed" MinWidth="100" Canvas.Bottom="5" Canvas.Right="5" Text="{Binding ElementName=sldSetSpeed,Path=Value}" /> </Canvas> </UserControl> 它有一个名为Speed的DependencyProperty: public partial class SetSpeed : UserControl { public SetSpeed() { InitializeComponent(); } public static readonly DependencyProperty SpeedProperty; static SetSpeed() { var md = new FrameworkPropertyMetadata(0.0); SetSpeed.SpeedProperty = DependencyProperty.Register( "Speed",typeof(double),typeof(SetSpeed),md); } public double Speed { get { return (double)GetValue(SetSpeed.SpeedProperty); } set { SetValue(SetSpeed.SpeedProperty,value); } } } 我已将控件放在Window中并将元素(任何元素)绑定到它: <Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" xmlns:my="clr-namespace:AGWPFControls;assembly=AGWPFControls"> <StackPanel> <my:SetSpeed Name="setSpeed1" /> <TextBlock Text="{Binding ElementName=setSpeed1,Path=Speed}" /> </StackPanel> </Window> 它很简单.不过没有骰子.当我移动滑块时,TextBlock中的值永远不会改变.我错过了什么,这里? 解决方法
看起来你没有将Slider绑定到依赖属性.就像是:
<UserControl x:Name="userControl" x:Class="AGWPFControls.SetSpeed" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" MinHeight="50" MinWidth="110"> <Canvas> <Slider Name="sldSetSpeed" MinWidth="100" Canvas.Top="5" Canvas.Left="5" Value="{Binding Speed,ElementName=userControl,Mode=TwoWay}" /> <TextBox Name="txtSpeed" MinWidth="100" Canvas.Bottom="5" Canvas.Right="5" Text="{Binding ElementName=sldSetSpeed,Path=Value}" /> </Canvas> </UserControl> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |