У меня есть следующее объявление:Dependency Property - Невозможно задать значение от XAML
public static readonly DependencyProperty PassColorProperty = DependencyProperty.RegisterAttached("PassColor",
typeof(string),
typeof(ColorMasking),
new PropertyMetadata("#FFCCFF"));
public string PassColor
{
get { return (string)GetValue(PassColorProperty); }
set { SetValue(PassColorProperty, value); }
}
На данный момент этот код не компилируется, потому что я не добавил: DependencyProperty в моем классе. Когда я добавляю этот код, он говорит, что строка PassColor недействительна.
Без такой строки код компилируется, и я могу установить, прочитав свойство из этого класса. Однако я не могу установить его из своего XAML. Он говорит, что свойства не существует. Мой xaml:
<TextBox Grid.Column="1" Grid.Row="8" Margin="3" Width="Auto" Height="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
b:ColorMasking.Mask=" ... Long Regex Command ... "
b:ColorMasking.PassColor="99FF99" />
Код для установки маски отлично работает. Думаю, я тоже скопировал все необходимые материалы. Сложно понять, почему я не могу добавить другое свойство.
Если это имеет значение, это изменение я написал этот код: How to define TextBox input restrictions?
EDIT:
public class ColorMasking : DependencyObject
{
private static readonly DependencyPropertyKey _maskExpressionPropertyKey = DependencyProperty.RegisterAttachedReadOnly("MaskExpression",
typeof(Regex),
typeof(ColorMasking),
new FrameworkPropertyMetadata());
/// <summary>
/// Identifies the <see cref="Mask"/> dependency property.
/// </summary>
///
public static readonly DependencyProperty PassColorProperty = DependencyProperty.Register("PassColor",
typeof(string),
typeof(ColorMasking),
new PropertyMetadata("#99FF99"));
public static readonly DependencyProperty FailColorProperty = DependencyProperty.Register("FailColor",
typeof(string),
typeof(ColorMasking),
new PropertyMetadata("#FFCCFF"));
public static readonly DependencyProperty MaskProperty = DependencyProperty.RegisterAttached("Mask",
typeof(string),
typeof(ColorMasking),
new FrameworkPropertyMetadata(OnMaskChanged));
Я не знаю, если это опечатка, но вы должны установить 'SetValue (PassColorProperty, value);}' там. –
Это было, но это не изменило других проблем. –
Возможно, потому что вы пропустили '#' в b: ColorMasking.PassColor = "99FF99"? – LPL