我是WPF的首发,而且我似乎无法弄明白。
如果未选择CheckBox
,我想要禁用RadioButton
。
我目前的语法是:
<CheckBox IsEnabled="{Binding ElementName=rbBoth, Path=IsChecked}">Show all</CheckBox>
所以基本上,我希望IsEnabled采用与我目前提供的绑定表达式相反的值。
我该怎么做?感谢。
答案 0 :(得分:20)
你需要使用所谓的值转换器(一个实现IValueConverter的类。)这个类的一个非常基本的例子如下所示。 (注意剪裁......)
public class NegateConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( value is bool ) {
return !(bool)value;
}
return value;
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( value is bool ) {
return !(bool)value;
}
return value;
}
}
然后将其包含在您的XAML中,您将执行以下操作:
<UserControl xmlns:local="clr-namespace:MyNamespace">
<UserControl.Resources>
<local:NegateConverter x:Key="negate" />
</UserControl.Resources>
...
<CheckBox IsEnabled="{Binding IsChecked, ElementName=rbBoth, Converter={StaticResource negate}}"
Content="Show all" />
</UserControl>
答案 1 :(得分:1)
您当前的语法已满足您的需求。如果未选中radiobutton,它将禁用该复选框。
如果你真的想要反转场景,你只需要一个转换器。看一下这个sample。
答案 2 :(得分:0)
这个怎么样:
为布尔值创建转换器:
class BooleanValueInverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(parameter is IValueConverter))
{
if (value is bool)
return !(bool)value;
else
return DependencyProperty.UnsetValue;
}
else
{
IValueConverter converter = (IValueConverter)parameter;
if (value is bool)
{
bool input = !(bool)value;
return converter.Convert(input, targetType, null, culture);
}
else
{
return DependencyProperty.UnsetValue;
}
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
在xaml中导入实现逆变器类的命名空间:
xmlns:util="clr-namespace:MyApp.Utilities"
在资源部分添加引用逆变器类:
<util:BooleanValueInverter x:Key="Inverter" />
然后就这样简单地使用它:
<TextBox Text="{Binding Path=TextProperty}" IsEnabled="{Binding SomeBoolPropertyToInvert, Converter={StaticResource Inverter}}"/>
答案 3 :(得分:0)
$host = "localhost";
$user = "root";
$pass = "";
$db = "fast";
$con = mysqli_connect($host, $user, $pass, $db);
// Check connection
if (mysqli_connect_errno()) {
die("Failed to connect to MySQL: " . mysqli_connect_error());
}
if (isset($_POST['username'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username='" . $username . "' AND password='" . $password . "' LIMIT 1";
$res = mysqli_query($con, $sql);
if (mysqli_num_rows($res) > 0) {
echo "You have succesfully logged in.";
exit();
}
else {
echo "Invalid login information. Please return the previous page";
exit();
}
mysqli_close($con);
}