Я привязываю ObservableCollection к элементу управления, у которого есть преобразователь для изменения его видимости в зависимости от того, имеет ли коллекция какие-либо значения или нет:
Упрощенный пример:
XAML:
<Window.Resources>
<local:MyConverter x:Key="converter"/>
</Window.Resources>
<Grid x:Name="grid">
<Rectangle Height="100" Width="200" Fill="CornflowerBlue"
Visibility="{Binding Converter={StaticResource converter}}"/>
<Button Content="click"
HorizontalAlignment="Left" VerticalAlignment="Top"
Click="Button_Click"/>
</Grid>
C #:
ObservableCollection<string> strings;
public MainWindow()
{
InitializeComponent();
strings = new ObservableCollection<string>();
grid.DataContext = strings;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
strings.Add("new value");
}
Когда коллекция связана, Rectangle отображается, когда есть значения, а не когда коллекция пуста. Однако, если коллекция пуста и я добавляю значение во время выполнения, Rectangle не отображается (метод преобразователя Convert даже не запускается). Я что-то упускаю или просто пытаюсь слишком много требовать от IValueConverter?