Я привязываю 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 не появляется (метод Convert конвертера даже не запускается). Я что-то упускаю или просто пытаюсь спросить слишком много об IValueConverter?