不工作 Count to Visibility
Not working Count to Visibility
我需要在 Count > 0 时显示网格,否则折叠它。
<Grid HorizontalAlignment="Left"
Visibility="{Binding Num.Count, Converter={StaticResource IntToVisibleConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Image Source="Image.jpg"
Height="{Binding ActualHeight, ElementName=TextBlock, UpdateSourceTrigger=PropertyChanged}"
Grid.Column="0"/>
<TextBlock x:Name="TextBlock"
Grid.Column="1"
Text="{Binding Num, Converter={StaticResource NumStrConverter}}"/>
</Grid>
我用这个转换器
class IntToVisibleConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
int val = (int) value;
if (val == 0)
return Visibility.Collapsed;
return Visibility.Visible;
}
...
}
public IEnumerable<string> Num{ get; set;}
图像显示 image.jpg 当计数==0
因为你的 Num
是 IEnumerable<string>
,当你写 Num.Count
时,你实际上指的是 Count
扩展方法。 WPF 中的绑定与属性一起使用,因此不会起作用。如果您查看调试输出,您应该会收到绑定错误。
因此,您需要确保绑定到 属性,而不是方法。像默认提及一样,切换到 ObservableCollection<T>
或类似的东西,它们都会给你一个 Count
属性,并在集合更改时更新通知。
我需要在 Count > 0 时显示网格,否则折叠它。
<Grid HorizontalAlignment="Left"
Visibility="{Binding Num.Count, Converter={StaticResource IntToVisibleConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Image Source="Image.jpg"
Height="{Binding ActualHeight, ElementName=TextBlock, UpdateSourceTrigger=PropertyChanged}"
Grid.Column="0"/>
<TextBlock x:Name="TextBlock"
Grid.Column="1"
Text="{Binding Num, Converter={StaticResource NumStrConverter}}"/>
</Grid>
我用这个转换器
class IntToVisibleConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
int val = (int) value;
if (val == 0)
return Visibility.Collapsed;
return Visibility.Visible;
}
...
}
public IEnumerable<string> Num{ get; set;}
图像显示 image.jpg 当计数==0
因为你的 Num
是 IEnumerable<string>
,当你写 Num.Count
时,你实际上指的是 Count
扩展方法。 WPF 中的绑定与属性一起使用,因此不会起作用。如果您查看调试输出,您应该会收到绑定错误。
因此,您需要确保绑定到 属性,而不是方法。像默认提及一样,切换到 ObservableCollection<T>
或类似的东西,它们都会给你一个 Count
属性,并在集合更改时更新通知。