2013-02-18 118 views
0
<Grid x:Name="LayoutRoot"> 
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> 
     <Button Content="Button" Width="112" Height="50" Visibility="{Binding IsFocused, ElementName=textBox1,Converter={StaticResource MyConverter1}}"/>   
    </StackPanel> 
    <TextBox Height="57" HorizontalAlignment="Left" Margin="144,103,0,0" Name="textBox1" VerticalAlignment="Top" Width="98" /> 
    <TextBox Height="57" HorizontalAlignment="Left" Margin="277,103,0,0" x:Name="textBox2" VerticalAlignment="Top" Width="88" /> 
    <TextBox Height="57" HorizontalAlignment="Left" Margin="390,103,0,0" x:Name="textBox3" VerticalAlignment="Top" Width="87" />   
</Grid> 

以上代码我可以得到以下结果。如何将多个元素属性绑定到wpf中的元素?

enter image description here

如果点击textBox1的按钮将隐藏在同一我点击TextBox2中textBox3,该按钮会隐藏。

我需要的是,每当我点击textBox1的texBox3,按钮应该是隐藏。 我的意思是以上线,

<Button Content="Button" Width="112" Height="50" Visibility="{Binding IsFocused, ElementName=textBox1 or textBox3,Converter={StaticResource MyConverter1}}"/> 

这可能吗?

回答

1

一种方法是使用MultiBindingIMultiValueConverter实现。

转换器的重要部分将是这个样子:

public class MultiConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, 
          CultureInfo culture) 
    { 
     return values.Cast<bool>().Any(x => x) ? 
       Visibility.Collapsed : Visibility.Visible; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, 
           object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

用法是这样的:

<Button Content="Button" Width="112" Height="50" 
     Margin="196,186,195,75"> 
    <Button.Visibility> 
    <MultiBinding Converter="{StaticResource MultiConverter}"> 
     <Binding ElementName="textBox1" Path="IsFocused" /> 
     <Binding ElementName="textBox3" Path="IsFocused" /> 
    </MultiBinding> 
    </Button.Visibility> 
</Button> 
+0

怎么也得来同时指定两个element.I的一个性质不知道,如何可能请帮助我。 – user2082674 2013-02-18 10:44:00

+0

@ user2082674:我不明白你的评论。我的回答就是你所问的:如果textBox1或textBox3具有焦点,则该按钮将被隐藏。 – 2013-02-18 10:45:56

+0

对不起丹尼尔希尔加斯,我迟到了,我就这么评论了。现在它运行良好,谢谢你的努力。 – user2082674 2013-02-18 10:52:35

相关问题