Что мне нужно сделать?Обновление зависимого свойства при изменении или поле, от которого оно зависит от изменений
Мне нужно сделать одно выражение, от которого должно зависеть свойство зависимостей.
Пусть согласно ниже:
Count = dependOne + dependTwo;
Здесь Count
является Dependency свойство и dependOne
и dependTwo
две переменные, на которых свойства зависимостей Count
должны Зависит.
Теперь, когда я изменяю переменную dependOne
или dependTwo
, свойство зависимостей должно обновляться автоматически.
Возможно ли это? Если да, то как?
Смотрите ниже код
XAML:
<Window x:Class="DependecnyProperty.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Background="LightGray" Text="{Binding Path=Count}" Height="23" HorizontalAlignment="Left" Margin="164,102,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="164,148,0,0" Name="button1" VerticalAlignment="Top" Width="120" Click="button1_Click" />
</Grid>
</Window>
КОД ЗА:
namespace DependecnyProperty
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
Count = dependOne + dependTwo;
}
int dependOne = 0;
int dependTwo = 0;
public int Count
{
get { return (int)GetValue(CountProperty); }
set { SetValue(CountProperty, value); }
}
// Using a DependencyProperty as the backing store for Count. This enables animation, styling, binding, etc...
public static readonly DependencyProperty CountProperty =
DependencyProperty.Register("Count", typeof(int), typeof(MainWindow), new UIPropertyMetadata(12));
private void button1_Click(object sender, RoutedEventArgs e)
{
dependOne = dependOne + 2;
dependTwo = dependTwo + 1;
//I need to find way ...now here i have changed value of two variable.
//now it is possible to change Dependency Property
//Without here setting the value of dependency property
}
}
}
EDIT ОБНОВЛЕНО CodeBehind:
namespace DependecnyProperty
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
ViewModel vm;
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
vm = new ViewModel();
//this.DataContext = vm;
Count = vm.DependOne + vm.DependTwo;
}
public int Count
{
get { return (int)GetValue(CountProperty); }
set { SetValue(CountProperty, value); }
}
// Using a DependencyProperty as the backing store for Count. This enables animation, styling, binding, etc...
public static readonly DependencyProperty CountProperty =
DependencyProperty.Register("Count", typeof(int), typeof(MainWindow), new UIPropertyMetadata(12));
private void button1_Click(object sender, RoutedEventArgs e)
{
vm.DependOne++;
vm.DependTwo++;
//I need to find way ...now here i have changed value of two variable.
//now it is possible to change Dependency Property
//Without here setting the value of dependency property
}
public class ViewModel : INotifyPropertyChanged
{
public ViewModel()
{
}
private int dependOne;
public int DependOne
{
get
{
return dependOne;
}
set
{
dependOne = value;
OnPropertyChanged("DependOne");
}
}
private int dependTwo;
public int DependTwo
{
get
{
return dependTwo;
}
set
{
dependTwo = value;
OnPropertyChanged("DependTwo");
}
}
#region -- INotifyPropertyChanged Members --
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyNameArg)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyNameArg));
}
}
#endregion
}
}
}
я это один и делает Sence .. .... –
Да, это просто ... Как не зная вашей реальной ситуации, я просто сказал это, но я думаю, что @Merlyn Morgan-Graham - хороший момент. Кроме того, вы можете подумать о том, чтобы сделать dependOne «DependecnyProperty», если функция dependOne действует на View. Затем используйте «Value Changed Callback» для обновления Count. –
Спасибо, что ответили .. но .. ,, согласно ответу Грэма ..... где мы должны положить выражение ... 'Count = dependOne + dependTwo; ' –