личные члены не видны ни для каких других классов, даже для детей
Вы не можете переопределить частный метод, но опять же вы не можете его вызвать. Однако вы можете создать идентичный метод с тем же именем у ребенка.
public class A
{
private int calculate() {return 1;}
public void visibleMethod()
{
System.out.println(calculate());
};
}
public class B extends A
{
private int calculate() {return 2;}
public void visibleMethod()
{
System.out.println(calculate());
};
}
Если вы вызываете A.visibleMethod (), он печатает 1.
Если вы вызываете B.visibleMethod (), он печатает 2.
Если вы не реализуете частный метод вычисления () в B, он не будет компилироваться, потому что публичный метод, который его вызывает, не может видеть частный метод в A.
Если я помню правильно, это - известная проблема. Мы повторно обработали текстовое поле по шаблону для включения следующего:
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<ControlTemplate.Resources>
<BooleanToVisibilityConverter x:Key="converter" />
</ControlTemplate.Resources>
<DockPanel LastChildFill="True">
<Border
BorderThickness="1"
BorderBrush="Red"
Visibility="{Binding ElementName=placeholder, Mode=OneWay, Path=AdornedElement.IsVisible, Converter={StaticResource converter}}">
<AdornedElementPlaceholder x:Name="placeholder" />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
У меня есть решение проблемы самого, которая должна изменить мое событие нажатия кнопки, которое изменяет видимость панелей. Это изменилось бы на что-то вроде этого:
private void Button_Click(object sender, RoutedEventArgs e) {
if (panel1.Visibility == Visibility.Collapsed) {
panel1.Visibility = Visibility.Visible;
DataBoundTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
panel2.Visibility = Visibility.Collapsed;
}
else {
panel1.Visibility = Visibility.Collapsed;
DataBoundTextBox.GetBindingExpression(TextBox.TextProperty).UpdateTarget();
panel2.Visibility = Visibility.Visible;
}
}
UpdateSource () и UpdateTarget () имеют эффект повторного применения и удаления красного прямоугольника, но это походит на ужасный взлом. Конечно, wpf платформа должна скрывать красный прямоугольник для меня, когда содержание панели сворачивается. Любая более чистая фиксация, которая не требует, чтобы я играл с выражением привязки, получает мой голос.
Спасибо,
Sam