Поскольку типы несовместимы (и вы, как правило, хотите избегать свойств кода-за-базы / зависимостей), лучшим вариантом для этого типа простой проверки является «преобразователь строки в включенный».
Поскольку конвертеры совместно используются в проектах и являются лишь второстепенной записью в XAML (и не вносят изменений в выделенный код), вам не стоит беспокоиться об использовании конвертеров ... конвертеры - ваши друзья :)
Начните создавать библиотеку полезных конвертеров, поскольку снова и снова возникают одни и те же проблемы.
Вот некоторый минимальный код (без проверок ошибок) для конвертера, который делаетчто вы хотели:
using System;
using System.Windows.Data;
namespace LengthToEnabledTest
{
public class LengthToEnabledConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is string)
{
return (value as string).Length > 0;
}
throw new NotImplementedException();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}
и несколько тестов на соответствие XAML (простая панель стека с 1 текстовым полем и 1 кнопкой):
<UserControl x:Class="TransitioningContentContolTest.LengthEnabledTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:converter="clr-namespace:LengthToEnabledTest"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<converter:LengthToEnabledConverter x:Key="LengthToEnabledConverter"/>
</UserControl.Resources>
<StackPanel x:Name="LayoutRoot" Background="White">
<TextBox x:Name="textBox" />
<Button Content="Press me" Height="20" IsEnabled="{Binding Text, ElementName=textBox, Converter={StaticResource LengthToEnabledConverter}}"/>
</StackPanel>
</UserControl>