我将Telerik RadGridView绑定到List<MyObject> myList = new List<MyObject>
。但是如果myList.Count == 0
(列表为空;))我想向用户显示另一个控件。
我知道我可以使用一些可见性转换器,但我更喜欢在XAML中实现这一点。
谢谢
答案 0 :(得分:1)
我认为价值转换器是你唯一的选择:) 但是,我发现如果你正确地构造它们,价值转换器就很棒。
以下是一些很好的工具:
考虑到这些工具,我会选择这样的东西:
<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>
另外,正如Jason所说,myList需要是一个ObservableCollection,以便gui在更改时得到通知。
希望它有所帮助!
答案 1 :(得分:0)
如果您切换到ObservableCollection<MyObject>
,则可以使用VisibilityConverters将您的myList.Count
全部绑定到XAML中。如果您因为在代码隐藏中设置ItemsSource而遇到问题,您可能希望将其作为资源或切换到更多MVVM。