Rap*_*Rap 3 c# data-binding wpf xaml dependency-properties
我有一个非常简单的用户控件叫做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>
Run Code Online (Sandbox Code Playgroud)
它有一个名为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); }
}
}
Run Code Online (Sandbox Code Playgroud)
我已将控件放在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>
Run Code Online (Sandbox Code Playgroud)
它很简单.不过没有骰子.当我移动滑块时,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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1706 次 |
| 最近记录: |