Silverlight:根据列表计数选择控件

时间:2011-08-24 20:44:32

标签: silverlight xaml telerik

我将Telerik RadGridView绑定到List<MyObject> myList = new List<MyObject>。但是如果myList.Count == 0(列表为空;))我想向用户显示另一个控件。

我知道我可以使用一些可见性转换器,但我更喜欢在XAML中实现这一点。

谢谢

2 个答案:

答案 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。