Ich mache ein benutzerdefiniertes Steuerelement basierend auf einer Schaltfläche, und ich möchte die Breite der Schaltfläche an eine Eigenschaft der Klasse binden. Ich habe this, this und this betrachtet, aber sie sind entweder nicht das, wonach ich suche, oder nicht funktionieren.Binden Sie eine Eigenschaft an eine andere Eigenschaft eines benutzerdefinierten Steuerelements
generic.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CustomControl">
<Style TargetType="{x:Type local:MyCustomControl}" BasedOn = "{StaticResource {x:Type Button}}">
<Setter Property = "Background" Value = "LightSalmon" />
<Setter Property = "Foreground" Value = "Blue"/>
<Setter Property = "Height" Value = "50"/>
<Setter Property = "Width" Value = "{Binding MyCustomControl.TextBinding}"/>
<Setter Property = "VerticalAlignment" Value = "Top"/>
<Setter Property = "Margin" Value="10"/>
</Style>
</ResourceDictionary>
MyCustomControl.cs
namespace CustomControl
{
public class MyCustomControl : Button
{
double m_textBinding = 50;
public double TextBinding
{
get { return m_textBinding; }
set { m_textBinding = value; }
}
static MyCustomControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyCustomControl),
new FrameworkPropertyMetadata(typeof(MyCustomControl)));
}
}
}
Wenn es sein muss, kann ich nur den "Setter" -Funktion, und geben Sie manuell, "Width = value;"
, aber ich würde es vorziehen, zu verwenden, eine Bindung. Derzeit funktioniert die "{Binding MyCustomControl.TextBinding}"
nicht.
'TextBinding' scheint ein seltsamer Name für eine Eigenschaft zu sein, die die Breite eines Steuer definiert. – Clemens
Ya, ich erkannte, dass es ein Doppel ist, keine Schnur, und ich behielt nur den Namen, weil ich faul bin, und das ist nur ein Test. –