私が探しているユースケースは非常に具体的であり、十分に文書化されていないため、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();
}
}
}
0私が行うことができるようにしたい
すべては、メインウィンドウの私のカスタムコントロールの呼び出しで言うです:
<controls:FillGraph x:Name="HydroModel" Percentage="{Binding FillPercentage}" />
(FillPercentageはあなたが心配する必要はありません別のスクリプトで何かされています)。 コントロールが拡張されるため、カスタムコントロールとして使用する必要があります。 私は依存関係のプロパティが必要かもしれないことを理解していますが、多くの異なる方法を試した後、私はこの一見単純な作業を行う方法を理解できません。ヘルプは高く評価されます。
あなたが実際に依存関係プロパティを作成する必要があります。
あなたの質問からこのXAMLはのviewmodelは
FillPercentage
性を有し、正しくINotifyPropertyChanged
を実装することを想定し、それは同じようで結構です。あなたは何を理解していますか? – SLaks'Percentage'は現在通常のプロパティです。単にそれを[依存プロパティ](https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/dependency-properties-overview)にしてください。 – Sinatr
propdpスニペットが役に立ちます –