Re: SilverLight
От: Shota  
Дата: 14.04.09 14:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>2.использовать DependencyProperty и забиндить у контрола isEnabled на данное например свойство .


Да, самое правильное решение — использовать биндинг и DataContext. Вот пример:

page.aspx
<UserControl x:Class="SLTest.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <Button Content="Test" IsEnabled="{Binding Path=Enabled}"/>
    </Grid>
</UserControl>


Model.cs:

public class Model : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private bool enabled = true;
        public bool Enabled
        {
            get { return enabled; }
            set
            {
                enabled = value;
                Fire("Enabled");
            }
        }

        internal void Fire(string propName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
            }
        }

    }


ну и одна строчка в Page.xaml.cs:

public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            this.DataContext = new Model();
        }
    }


Изменение в модели автоматически скажутся на состоянии кнопки, полная декларативность
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.