绑定转换器始终在datatemplate中返回相同的值

时间:2014-07-10 15:11:45

标签: c# binding converter datatemplate

我有一个与ObservableCollection绑定的ItemsControl,在ViewModelBase中有一个名为IsVisible的属性。

我为ItemsControl的ItemTemplate设置了一个DataTemplate。

<DataTemplate x:Key="MyDataTemplate">
    <Grid Margin="40,0,50,0" Background="Red" VerticalAlignment="Bottom">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <TextBlock Text="{Binding Category}" 
                   Style="{StaticResource MyTextBolckStyle}"
                   Visibility="{Binding IsVisible, Converter={StaticResource BooleanToVisibilityConverter}}"/>
        <TextBox Grid.Row="1" Width="280"
                 BorderBrush="Black"
                 BorderThickness="2"
                 Height="60"
                 HorizontalAlignment="Left"
                 Text="{Binding IsVisible}"
                 Padding="5,5,0,0"
                 TextWrapping="NoWrap"/>
    </Grid>
</DataTemplate>

这是我的BooleanToVisiblityCoverter

的Convert方法
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        var val = System.Convert.ToBoolean(value);

        if (val)
        {
            return Visibility.Visible;
        }

        return  Visibility.Collapsed;
    }

这是我得到的奇怪结果:

enter image description here

正如你可以看到每次IsVisible属性为true时,TextBlock可见性是可见的并且它工作正常但每次IsVisibe属性为false时,我都希望TextBlock的可见性被折叠但在我看来它是隐藏的,因为有一个空白而不是TextBlock,因为我正在使用银光,并且没有Visibility.Hidden枚举,​​我真的不知道问题是什么,我很困惑。

所以请帮助我。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您的转换器定义是什么? .NET Framework 3.0 +中已添加了BooleanToVisibility转换器

<强>更新

我尝试了你的代码,它在这里完美运行。我的猜测是问题不在你在这里发布的代码中,而在其他地方。