Silverlight树视图

时间:2009-08-14 12:55:31

标签: silverlight data-binding treeview

我在silverlight项目中使用树视图控件。我使用数据绑定将我的模型绑定到树。这很完美。

在向树中添加一些功能后,我遇到了两个问题:

  1. 当我更改模型上的属性时,即使我的onproperty更改后调用并且我的转换器未被调用,树也不会更新?(我需要在特定属性更改时隐藏项目) (回答)

  2. 如何隐藏树中的项目? (我使用Textbox + image作为项目模板)

  3. 隐藏堆栈面板,但空容器仍在树中

  4. 的DataTemplate:

                    <common:HierarchicalDataTemplate ItemsSource="{Binding Children}">
                    <StackPanel Orientation="Horizontal" Visibility="{Binding IsAvailable, Converter={StaticResource ItemVisibleConverter} ,Mode=TwoWay}"  >
                        <Image Source="{Binding Converter={StaticResource ImageConverter}}"/>
                        <controls:Label Name="myItem" Content="{Binding Description, Converter={StaticResource ItemConverter} ,Mode=TwoWay}" Foreground="Black"/>
                    </StackPanel>
                </common:HierarchicalDataTemplate>
    

    转换器:         公共对象转换(对象值,类型targetType,对象参数,ystem.Globalization.CultureInfo文化)         {            return GetVisibility(value);         }

            private Visibility GetVisibility(object value)
        {
            bool IsVisible= (bool)value;
            if (IsAvailableForDownload)
            {
                return Visibility.Visible;
            }
            else
            {
                return Visibility.Collapsed;
            }
        }
    

    模型

        public class MyModel: INotifyPropertyChanged
    {
        public bool IsAvailable
        {
            get
            {
                return _IsAvailableForDownload;
            }
            set
            {
                _IsAvailableForDownload = value;
                onPropertyChanged(this, "IsAvailableForDownload");
            }
        }
    
    //Code for on property changed event
    }
    

    此致

1 个答案:

答案 0 :(得分:0)

  1. 您可能需要确保model implements INotifyPropertyChanged以便绑定系统能够正常工作。

  2. 您的项目模板可以绑定的是Visibility类型的属性,还是bool加上返回Visibility值的值转换器?

    &LT;&的DataTemplate GT;    &lt; Grid Visibility =“{Binding ThisThingsIsVisible}”&gt;         &lt; Button Content =“{Binding Blah}”/&gt;    &LT; /网格和GT; &LT; / DataTemplate中&GT;

  3. 我不知道这是否是推荐的方式 - 绑定的对象是否可以不在其集合中公开隐藏的项目?