我在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是另一个脚本中的内容,您不需要担心)。 该控件将被扩展,因此需要保持为自定义控件。 我知道我可能需要依赖属性,但是在尝试了许多不同的方法之后,我无法弄清楚如何完成这个看似简单的任务。感谢您的帮助。
Percentage
目前是一个普通属性。只需将其改为依赖属性即可。 - Sinatr