XAML中的WPF图像可见性绑定

时间:2013-11-25 09:42:43

标签: wpf xaml binding

我在将图像绑定到Radiobuttion时遇到了一些问题。我只想通过XAML绑定它,我所做的就是这个..我创建了一个带有5个radiobutton的Stackpanel ..

    <StackPanel Name="StackPanel1" Grid.Row="3" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
        <RadioButton GroupName="Group1" Content="1" 
                HorizontalAlignment="Left" 
                Width="35" BorderThickness="1,0,0,1"
                IsChecked="CodeBehindBinding..." />
        <RadioButton GroupName="Group1" Content="2" 
                HorizontalAlignment="Left" VerticalAlignment="Top" 
                Width="35" BorderThickness="1,0,0,1"
                IsChecked="{CodeBehindBinding..." />
    ......

XAML中的其他地方我试图将Label绑定到组。一起..

    <Image Grid.Row="3" Grid.Column="2" HorizontalAlignment="Left" Height="25" VerticalAlignment="Top" Width="25" Source="/*****;component/Resources/Checked.png" 
           Visibility="{Binding IsChecked, BindingGroupName=StackPanel1.Group1}"
           />

...... Nothinig发生了。 ;-)图像永久可见。

我该如何解决?希望你能帮忙.. Greetz Iki

2 个答案:

答案 0 :(得分:7)

我假设“IsChecked”属性是布尔值。 要绑定Visibility属性,必须绑定到Visibility type属性或使用converter。

如果您不想使用转换器,则需要声明可见性通知属性:

    private Visibility isChecked= Visibility.Visible;
    public Visibility IsChecked
    {
        get { return isChecked; }
        set
        {
            isChecked = value;
            RaisePropertyChanged("IsChecked");
        }
    }

如果您想继续使用布尔参数,请使用 Visibility converter    

答案 1 :(得分:3)

这里有两件事不对。首先,您需要将Name分配给要用作绑定源的RadioButton,并将其用于绑定的ElementName属性。

<RadioButton x:Name="radioButton1" ... />

然后,您的绑定还需要从boolVisibility的转换器。你可以使用WPF的BooleanToVisibilityConverter

<Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Window.Resources>radia

<Image Visibility="{Binding IsChecked, ElementName=radioButton1,
                    Converter={StaticResource BooleanToVisibilityConverter}}" ... />