«{DependencyProperty.UnsetValue}» не является допустимым значением для свойства «FocusVisualStyle» - PullRequest
9 голосов
/ 23 февраля 2011

У меня странная ошибка, которую я пытаюсь отладить без удачи.

У меня есть hwndhost с подклассами, показывающий некоторый контент, у меня есть следующая функция в этом классе, чтобы установить на полный экран:

    private void SetFullScreen(bool enable)
    {
        if (enable)
        {
            fs = new Window();
            fs.ResizeMode = ResizeMode.NoResize;
            fs.WindowState = System.Windows.WindowState.Maximized;
            fs.WindowStyle = System.Windows.WindowStyle.None;
            fs.Topmost = true;
            fs.PreviewKeyDown += delegate(object sender, KeyEventArgs e) { 
                if (e.Key==Key.Escape)
                    FullScreen = false;
            };
            fs.Show();
        }
        else
        {
            fs.Close();
            fs = null;
        }
    }

Это отлично работало в моем прототипе приложения WPF, но когда я использую этот код в своем основном приложении, я получаю эту ошибку при закрытии окна (escape-ключ) и при fs.close() вызове:

'{DependencyProperty.UnsetValue}' is not a valid value for property 'FocusVisualStyle'.

Странно то, что это происходит примерно через 1500 мс после закрытия окна.Я попытался установить FocusVisualStyle на fs на ноль, но похоже, что-то еще.Смысл в том, что он пытается сфокусировать другой элемент в моем приложении, у которого нет этого свойства, но на самом деле я понятия не имею!

Спасибо!

Редактировать.Проблема была в пользовательской настройке FocusVisualStyle на моей полноэкранной кнопке.Я установил {x: Null}, и проблема исчезла.

Ответы [ 2 ]

7 голосов
/ 23 февраля 2011

я предполагаю, что элемент управления, который получает фокус при закрытии упомянутого окна, имеет свой собственный стиль, который не включает в себя FocusVisualStyle.

, поэтому, чтобы помочь вам в дальнейшем, вы должны немного пояснитьподробнее: что происходит (или должно происходить), когда вы закрываете это окно?

какой тип элемента управления должен получить фокус?

5 голосов
/ 13 декабря 2018

Это может произойти, если стиль указывает на StaticResource, который НЕ существует .

Этот xaml не удался:

<Grid.Resources>
    <Style TargetType="{x:Type TextBox}">
        <Setter Property="Height" Value="{StaticResource StandardControlHeight}"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
    </Style>
</Grid.Resources>

Ошибка была:

System.InvalidOperationException: '' {DependencyProperty.UnsetValue} 'не является допустимым значением для свойства' Height '.'

Когда я добавил недостающие StaticResource проблема ушла.

...