WPF依赖项属性



我很难理解WPF中的依赖属性,可能是因为我正在寻找的用例非常具体,而且没有很好的文档记录。

我有一个自定义控件,看起来像这样(请忽略所有可怕的代码,这是暂时的!):

<UserControl x:Class="HydroAccessory.Controls.FillGraph"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:HydroAccessory.Controls"
mc:Ignorable="d"
SizeChanged="FillGraph_SizeChanged"
d:DesignHeight="200" d:DesignWidth="300">
<Grid>
<TextBlock x:Name="PercentageTB" Text="Fill Percentage: 0%" />
</Grid>

我在我的主窗口里这样称呼它:

<controls:FillGraph x:Name="HydroModel" />

控件内的代码如下:

using System;
using System.Windows;
using System.Windows.Controls;
namespace HydroAccessory.Controls
{
public partial class FillGraph : UserControl
{
private float percentage;
public float Percentage
{
get
{
return percentage;
}
set
{
percentage = value;
PercentageTB.Text = String.Format("Fill Percentage: {0}", percentage.ToString() + "%");
}
}
public FillGraph()
{
InitializeComponent();
}
}
}

我想做的就是在主窗口中的自定义控制调用中说:

<controls:FillGraph x:Name="HydroModel" Percentage="{Binding FillPercentage}" />

(其中FillPercentage是另一个脚本中不需要担心的内容)。控件将被扩展,因此它需要保留为自定义控件。我知道我可能需要依赖属性,但在尝试了许多不同的方法后,我无法找到如何完成这项看似简单的任务。感谢您的帮助。

您的代码中没有依赖属性。

这是一个依赖属性:

public partial class FillGraph : UserControl
{
public FillGraph()
{
InitializeComponent();
}
public float Percentage
{
get { return (float)GetValue(PercentageProperty); }
set { SetValue(PercentageProperty, value); }
}
//  Using a DependencyProperty as the backing store for Percentage.  This 
//  enables animation, styling, binding, etc...
public static readonly DependencyProperty PercentageProperty =
DependencyProperty.Register("Percentage", typeof(float), 
typeof(FillGraph), new PropertyMetadata(0.0f));
}

最新更新