我有一个与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;
}
这是我得到的奇怪结果:
正如你可以看到每次IsVisible属性为true时,TextBlock可见性是可见的并且它工作正常但每次IsVisibe属性为false时,我都希望TextBlock的可见性被折叠但在我看来它是隐藏的,因为有一个空白而不是TextBlock,因为我正在使用银光,并且没有Visibility.Hidden枚举,我真的不知道问题是什么,我很困惑。
所以请帮助我。任何帮助表示赞赏。
答案 0 :(得分:0)
您的转换器定义是什么? .NET Framework 3.0 +中已添加了BooleanToVisibility转换器
<强>更新强>
我尝试了你的代码,它在这里完美运行。我的猜测是问题不在你在这里发布的代码中,而在其他地方。