Привязка свойства элемента к следующему свойству элемента - PullRequest
0 голосов
/ 18 ноября 2018

Мне нужно иметь два элемента, один из которых имеет свойство, которое связывается со свойством другого элемента.Например:

<Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Window.Resources>
<Grid>
    <TextBox x:Name="first" Text="Hello" Visibility="{Binding Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=second}" />
    <TextBox x:Name="second" Background="Transparent"/>
</Grid>

Идея в том, что когда я начну печатать во втором текстовом поле, первое текстовое поле исчезнет.Это прекрасно работает, но я получаю предупреждение в окне вывода:

System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=Text.IsEmpty; DataItem=null; target element is 'TextBox' (Name='first'); target property is 'Visibility' (type 'Visibility')

Предположительно, это происходит потому, что первое текстовое поле пытается привязать свойство второго текстового поля, но второе текстовое поле несуществует еще, потому что он создан после первого текстового поля.Конечно, это разрешается правильно после создания второго текстового поля, но я все равно хотел бы удалить предупреждение.

Если я изменим порядок элементов текстового поля, предупреждение исчезнет, ​​но теперь мое первое текстовое поле находится сверхумоего второго, поэтому я не могу ввести второе текстовое поле.Я попытался исправить это, установив индекс Z, но это не работает (в текстовом поле нет прямого свойства ZIndex, только Panel.ZIndex?)

1 Ответ

0 голосов
/ 18 ноября 2018

Предупреждение является чисто косметическим вопросом.При желании вы можете избавиться от него, указав в привязке значение FallbackValue:

Visibility="{Binding Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=second, FallbackValue=Collapsed}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...