Silverlight:基于列表计数选择控件

Silverlight:基于列表计数选择控件,silverlight,xaml,telerik,Silverlight,Xaml,Telerik,我正在将Telerik RadGridView绑定到列表myList=新列表。但是如果myList.Count==0(列表为空;),我想向用户显示另一个控件 我知道我可以使用一些可见性转换器,但我更喜欢用XAML实现这一点 谢谢如果您切换到ObservableCollection,您可以使用VisibilityConverter将其绑定到您的myList.Count所有XAML中。如果由于在codebehind中设置ItemsSource而出现问题,您可能希望将其作为资源或切换到更MVVM的内容

我正在将Telerik RadGridView绑定到
列表myList=新列表
。但是如果
myList.Count==0
(列表为空;),我想向用户显示另一个控件

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


谢谢

如果您切换到
ObservableCollection
,您可以使用VisibilityConverter将其绑定到您的
myList.Count
所有XAML中。如果由于在codebehind中设置ItemsSource而出现问题,您可能希望将其作为资源或切换到更MVVM的内容

如果切换到
ObservableCollection
,您可以使用VisibilityConverter将其绑定到您的
myList.Count
所有XAML中。如果由于在codebehind中设置ItemsSource而出现问题,您可能希望将其作为资源或切换到更MVVM的内容

我认为值转换器是您在这里的唯一选择:) 然而,我发现,如果你能正确地构造它们,值转换器是很棒的

以下是一些很好的工具:

考虑到这些工具,我会选择这样的方式:

    <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需要是一个可观察的集合,以便gui在更改时得到通知


希望有帮助

我认为值转换器是您在这里的唯一选择:) 然而,我发现,如果你能正确地构造它们,值转换器是很棒的

以下是一些很好的工具:

考虑到这些工具,我会选择这样的方式:

    <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需要是一个可观察的集合,以便gui在更改时得到通知


希望有帮助

我使用的是MVVM,没有代码隐藏。我想在myList为空时切换控件,以便更好地与用户交互。我想在myList为空时切换控件,以便更好地与用户交互。事实上,我使用的是CollectionViewSource,其中源是myList。在我的应用程序环境中工作得很好。所以我想我将实现Those转换器。事实上,我使用的是CollectionViewSource,其中的源代码是myList。在我的应用程序环境中工作得很好。所以我想我会实现这些转换器。