У меня довольно стандартная настройка: на основании того, пусто ли содержимое TextBox
, я хочу включить/отключить управление Button
.Как связать элемент IsEnabled Button с содержимым TextBox?
Я пытался, что бы работал в приложении WPF, но это не дает желаемого поведения при работе на Windows, Runtime:
<StackPanel>
<TextBox x:Name="ItemNameTextBox" Header="Item" />
<Button Content="Add Item"
IsEnabled="{Binding ElementName=ItemNameTextBox,
Path=Text.Length,
Mode=OneWay}" />
</StackPanel>
во время выполнения, однако, это производит следующий вывод отладки 1):
Error: BindingExpression path error: 'Length' property not found on 'Windows.Foundation.IReference`1<String>'.
сообщение об ошибке правильно: Windows::Foundation::IReference<String>
Безразлично У вас есть Length
.
Вопрос: Как связать IsEnabled
свойство Button
к TextBox
свойству объекта длины текста? Должен ли я реализовывать пользовательский конвертер данных, или это можно сделать только с помощью разметки?
1) Полная выходная ошибка:
Error: BindingExpression path error: 'Length' property not found on 'Windows.Foundation.IReference`1<String>'. BindingExpression: Path='Text.Length' DataItem='Windows.UI.Xaml.Controls.TextBox'; target element is 'Windows.UI.Xaml.Controls.Button' (Name='null'); target property is 'IsEnabled' (type 'Boolean')
это не совсем приста k out. Поскольку диагностика отладки говорит: * «Свойство« Длина »не найдено» *, поэтому его нельзя использовать. Вместо этого передавая свойство 'Text', и вычисление возвращаемого значения метода' Length() 'в преобразователе работает так, как ожидалось. Я не уверен, что все это необходимо. Действительно ли 'Platform :: String' действительно чужд привязке данных в Windows Runtime? – IInspectable
@Inspectable - ах. Пропустил этот аспект. Я предположил, что именно отказ int -> bool вызывал это сообщение, а не обнаруживал его в первую очередь, но привязка к TextBox's Text является приемлемым решением. – ChrisF
Это похоже на C#. Является ли тип 'string' проекцией для' Platform :: String' и обеспечивает ли это 'Length' как свойство (в отличие от функции-члена)? Я использую C++/CX, поэтому я не знаю. – IInspectable