我在堆栈面板中有一个按钮和文本框,当文本框变为只读状态时,该按钮应该禁用,我只想在 XAML 中执行此操作有什么办法吗?
问问题
776 次
2 回答
3
绑定很容易定义,但您需要一个转换器来反转布尔值。由于您想IsEnabled = true
在 TextBox 不是只读 ( IsReadOnly = false
) 时启用 ( ) Button。
XAML
<StackPanel>
<StackPanel.Resources>
<local:InvertBooleanConverter x:Name="invertBoolConverter"/>
</StackPanel.Resources>
<TextBox x:Name=textBox />
<Button IsEnabled={Binding IsReadOnly, ElementName=textBox, Converter={StaticResource invertBoolConverter}}/>
</StackPanel>
local
是您在 UserControl 中定义的命名空间,它指向 InvertBooleanConverter 的命名空间
xmlns:local="clr-namespace:NamespaceOfTheInvertBooleanConverter"
转换器
public class InvertBooleanConverter: IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
bool currentValue = System.Convert.ToBoolean(value);
return !currentValue;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
bool currentValue = System.Convert.ToBoolean(value);
return !currentValue;
}
}
于 2013-06-21T06:27:50.207 回答
1
<StackPanel>
<TextBox x:Name="targetTB">Hello</TextBox>
<Button Content="Test Button">
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=targetTB, Path=IsReadOnly}" Value="True">
<Setter Property="Button.IsEnabled" Value="False"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=targetTB, Path=IsReadOnly}" Value="False">
<Setter Property="Button.IsEnabled" Value="True"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
试试这个,它可以根据您的需要工作。
于 2013-06-21T07:02:12.213 回答