У меня есть всплывающее окно, которое должно показывать ошибки. Этот всплывающий текст представляет собой текстовый блок, привязанный к поле ErrorMessage. Связывание, по-видимому, работает правильно, так как мое сообщение об ошибке корректно обновляется. Однако, когда сообщение слишком длинное, высота всплывающего окна не изменяется, а часть сообщения об ошибке остается скрытой. Я был уверен, что WPF Popup автоматически адаптирует свой размер к своему контенту, однако в этой ситуации я не могу заставить его работать.WPF Popup не авторазмер правильно
Сообщение об ошибке объявляется следующим образом:
private String _errorMessage;
public String ErrorMessage
{
get { return _errorMessage; }
set
{
_errorMessage = value;
OnPropertyChanged();
}
}
Его значение изменяется в функции FindErrorInDates()
:
public void FindErrorInDates()
{
this.ErrorCount = 0;
this.HasError = false;
List<String> errors = new List<String>();
if (this.OutwardDeparturePlannedDate >= this.OutwardArrivalPlannedDate)
{
this.ErrorCount += 1;
errors.Add("Outward : Departure must be before Arrival");
}
if (this.ReturnDeparturePlannedDate >= this.ReturnArrivalPlannedDate)
{
this.ErrorCount += 1;
errors.Add("Return : Departure must be before Arrival");
}
if (this.OutwardDeparturePlannedDate >= this.ReturnDeparturePlannedDate
|| this.OutwardDeparturePlannedDate >= this.ReturnArrivalPlannedDate
|| this.OutwardArrivalPlannedDate >= this.ReturnDeparturePlannedDate
|| this.OutwardArrivalPlannedDate >= this.ReturnArrivalPlannedDate)
{
this.ErrorCount += 1;
errors.Add("Conflict between Outward Date and Return Date");
}
this.HasError = this.ErrorCount > 0;
this.ErrorMessage = String.Join("\r\n", errors);
}
и, наконец, всплывающих окон. Я пробовал все сочетания атрибутов Height
и Width
. Я не могу понять, как сделать этот ErrorMessage правильно вписывающимся в всплывающее окно шириной 200 шир. Что мне не хватает?
<Popup Height="Auto" IsOpen="{Binding IsMouseOver, ElementName=ValidDepartureDate, Mode=OneWay}" PopupAnimation="None" Placement="Bottom" AllowsTransparency="True">
<Border Height="Auto" Width="200" CornerRadius="2" Padding="5" Background="DarkRed" Visibility="{Binding DataContext.List.Presenter.JourneyResUtility.ErrorCount, Converter={StaticResource ZeroToVisibilityConverter}, RelativeSource={RelativeSource AncestorType=UserControl}}">
<TextBlock Height="Auto" Margin="5" Style="{StaticResource SmallFontStyle}" Text="{Binding DataContext.List.Presenter.JourneyResUtility.ErrorMessage, RelativeSource={RelativeSource AncestorType=UserControl}}" TextWrapping="Wrap"></TextBlock>
</Border>
</Popup>
Вы могли исправить это в то время – puneet