2015-07-21 4 views
0

У меня есть всплывающее окно, которое должно показывать ошибки. Этот всплывающий текст представляет собой текстовый блок, привязанный к поле 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> 
+0

Вы могли исправить это в то время – puneet

ответ

0

Вы пробовали использовать

Height="*" 

И

Width="*" 

Или это проблема текстовое поле, которое, кажется, не приспосабливаются к его содержанию?

+0

Ну, я подумал о значении '' * "', однако это тоже не работает. Всплывающее окно даже не появляется, когда я пытаюсь 'Height =" * "'. Я не могу сказать, не является ли его текстовое поле, которое не меняет размер, или самого всплывающего окна (или границы, которые вызывают проблему). – WizLiz