Здравствуйте, Аноним, Вы писали:
А>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();
}
}
Изменение в модели автоматически скажутся на состоянии кнопки, полная декларативность
Попробовал в первом приближенииб это то что нужно, Спасибо! (сам склонялся к некой вариации типа такого решения),
Просто и доступно получается, единственное не очень нравиться использовать DataContext (так как оно у меня в некоторых местах используеться по другому
Здравствуйте, Ra2005, Вы писали:
R>Просто и доступно получается, единственное не очень нравиться использовать DataContext (так как оно у меня в некоторых местах используеться по другому
По-другому нужно использовать Tag