Я думаю, что преобразователи значений - ваш единственный выбор здесь :) Однако я обнаружил, что если вы правильно их структурируете, преобразователи значений - это хорошо.
Вот несколько хороших инструментов для этого:
СИмея в виду эти инструменты, я бы использовал что-то вроде этого:
<Grid>
<telerik:RadGridView ItemsSource="{Binding myList}">
<telerik:RadGridView.Visibility>
<Binding Path="myList">
<Binding.Converter>
<converters:SequentialValueConverter>
<converters:IsEmptyConverter />
<converters:BooleanToVisibilityConverter TrueValue="Collapsed" FalseValue="Visible" />
</converters:SequentialValueConverter>
</Binding.Converter>
</Binding>
</telerik:RadGridView.Visibility>
</telerik:RadGridView>
<YourControl>
<YourControl.Visibility>
<Binding Path="myList">
<Binding.Converter>
<converters:SequentialValueConverter>
<converters:IsEmptyConverter />
<converters:BooleanToVisibilityConverter TrueValue="Visible" FalseValue="Collapsed" />
</converters:SequentialValueConverter>
</Binding.Converter>
</Binding>
</YourControl.Visibility>
</YourControl>
</Grid>
Кроме того, как сказал Джейсон, myList должен быть ObservableCollection, чтобы графический интерфейс получал уведомления при его изменении.
Надеюсьэто помогает!