我尝试将文本框值绑定到按钮IsEnable属性,但我得到一个例外。 这是我的转换类:
public class BooleanToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string num = value as string;
int n = int.Parse(num);
if (n > 10) return true;
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
这是我的xaml代码:
<Button Content="Button" Grid.Column="1" IsEnabled="{Binding ElementName=mytext,Path=Text,Converter={StaticResource convertIntToBool}}" HorizontalAlignment="Left" Margin="83,181,-156,-179" Grid.Row="1" VerticalAlignment="Top" Width="74"/>
<TextBox Grid.Column="1" x:Name="mytext" HorizontalAlignment="Left" Height="23" Margin="263,163,-382,-163" Grid.Row="1" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
我得到FormatException:输入字符串的格式不正确。
答案 0 :(得分:0)
好的,所以你想在TextBox中处理用户输入,并根据此输入启用或禁用按钮。
首先,您正在使用int.Parse,这意味着您信任用户在TextBox中编写一个数字:不要相信用户输入。
你需要使用int.TryParse,这样如果输入不是数字,它就不会抛出异常。
其次,我不知道为什么你将TextBox的Text属性设置为&#34; TextBox&#34;,这就是抛出异常的原因。
您的转换器代码应如下所示:
public class BooleanToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string num = value as string;
int n;
if(int.TryParse(num, out n)) { //return true is the parse worked
if(n > 10) return true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}