none
ListBox模板绑定 RRS feed

  • 问题

  • 现遇到一个问题,ListBox模板中有一个控件的Visibility属性需要根据后台的一个变量来控制,请问各位该如何实现比较好呢??
    2011年10月10日 1:29

答案

全部回复

  • 呃。。。解决了,看来还是对模版绑定的一些情况不是很熟悉哈~~
    2011年10月10日 2:28
  • <Grid x:Name="LayoutRoot" Background="White">
            <Grid.RowDefinitions>
                <RowDefinition Height="30"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <StackPanel Grid.Row="0" Orientation="Horizontal">
                <Button Content="改变Visibility" Click="Button_Click"></Button>
            </StackPanel>
            <ListBox Grid.Row="1"  HorizontalAlignment="Left"  x:Name="lstTest" VerticalAlignment="Top"  >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Button Content="{Binding Title}" Visibility="{Binding Display,Mode=TwoWay}"/>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>
    
    public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
                this.Loaded += new RoutedEventHandler(MainPage_Loaded);
            }
    
            void MainPage_Loaded(object sender, RoutedEventArgs e)
            {
                this.lstTest.ItemsSource = testList;
                testList.Add(new TestClass() { Title = "tttt", Display = System.Windows.Visibility.Visible });
                testList.Add(new TestClass() { Title = "tttt1", Display = System.Windows.Visibility.Visible });
            }
            private ObservableCollection<TestClass> testList = new ObservableCollection<TestClass>();
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                testList[0].Display = (testList[0].Display == Visibility.Visible) ? Visibility.Collapsed : Visibility.Visible;
            }
        }
        public class TestClass : INotifyPropertyChanged
        {
            public string Title { get; set; }
            private Visibility _Display;
            public Visibility Display
            {
                get
                {
                    return _Display;
                }
                set
                {
                    _Display = value;
                    NotifyPropertyChanged("Display");
                }
            }
    
            public void NotifyPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this,
                        new PropertyChangedEventArgs(propertyName));
                }
            }
    
            public event PropertyChangedEventHandler PropertyChanged;
        }
    



    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年10月10日 2:40
    版主
  • 自己解决了就好,我把你的标记为正确


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年10月10日 2:41
    版主
  • O嘞~

    2011年10月10日 7:39